zoukankan      html  css  js  c++  java
  • golang写一个占用大内存的程序

    场景, 需要让系统的内存使用率上升到超过20%, 可以用golang写一个简单的程序,让它占用很大的内存,从而使系统的内存使用率上升。

    package main
    
    import (
        "log"
        "time"
        "runtime"
        "fmt"
    )
    
    func PrintMemUsage() {
            var m runtime.MemStats
            runtime.ReadMemStats(&m)
            // For info on each, see: https://golang.org/pkg/runtime/#MemStats
            fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc))
            fmt.Printf("	TotalAlloc = %v MiB", bToMb(m.TotalAlloc))
            fmt.Printf("	Sys = %v MiB", bToMb(m.Sys))
            fmt.Printf("	NumGC = %v
    ", m.NumGC)
    }
    
    func bToMb(b uint64) uint64 {
        return b / 1024 / 1024
    }
    
    func main() {
    
        var a []string
    
        for i:= 1; i<31000000; i++ {
            a = append(a, "testingiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii123")
        }
        log.Println("end---")
        PrintMemUsage()
        for {
            //runtime.GC()  //调用 runtime.GC() 进行手动触发GC进行内存回收
            PrintMemUsage()
            log.Println(a[3100000])
            time.Sleep(time.Second * 2)
        }
        time.Sleep(time.Second * 100)
        log.Println("test memory end...", len(a))
    }
                                                                                                                            
    

      

     手动触发GC

     -------------------------------------------------------------------------------------------------------0804------------

    一个消耗内存(以Mb为单位)的小程序

        有时候需要消耗指定大小的内存来验证一些问题,这个时候一些小程序就可以帮上忙了,下面这个小程序malloc_mb.c就是这样的作用:

    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
     
    #define UNIT (1024*1024)
     
    int main(int argc, char *argv[])
    {
            long long i = 0;
            int size = 0;
     
            if (argc != 2) {
                    printf(" === argc must 2
    ");
                    return 1;
            }
            size = strtoull(argv[1], NULL, 10);
            if (size == 0) {
                    printf(" argv[1]=%s not good
    ", argv[1]);
                    return 1;
            }
     
            char *buff = (char *) malloc(size * UNIT);
            if (buff)
                    printf(" we malloced %d Mb
    ", size);
            buff[0] = 1;
     
            for (i = 1; i < (size * UNIT); i++) {
                    if (i%1024 == 0)
                            buff[i] = buff[i-1]/8;
                    else
                            buff[i] = i/2;
            }
            pause();
    }
    ————————————————
    版权声明:本文为CSDN博主「温暖的电波」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wennuanddianbo/article/details/81709894
    

       通过  gcc malloc_mb.c -o mallocMb 命令就可以生成一个小程序mallocMb; 使用./mallocMb 100 &就可以在系统中消耗掉100M的内存。

  • 相关阅读:
    IE浏览器兼容问题
    sublime text3插件和快捷键
    CSS3高级
    盒子模型
    css3动画
    FreeBSD port安装 *** [checksum] Error code 1
    vs 2008设置vs6.0字体
    android 无法读取lua文件问题2
    u盘安装centos6 x8664
    cocos2dx lua 路径问题的一个bug (网络整理)
  • 原文地址:https://www.cnblogs.com/oxspirt/p/15092862.html
Copyright © 2011-2022 走看看