场景, 需要让系统的内存使用率上升到超过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的内存。