場景, 需要讓系統的內存使用率上升到超過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的內存。