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的内存。

原文地址:https://www.cnblogs.com/oxspirt/p/15092862.html