場景, 需要讓系統的內存使用率上升到超過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("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc))
fmt.Printf("\tSys = %v MiB", bToMb(m.Sys))
fmt.Printf("\tNumGC = %v\n", 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\n");
return 1;
}
size = strtoull(argv[1], NULL, 10);
if (size == 0) {
printf(" argv[1]=%s not good\n", argv[1]);
return 1;
}
char *buff = (char *) malloc(size * UNIT);
if (buff)
printf(" we malloced %d Mb\n", 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的內存。
