golang写一个占用大内存的程序
场景, 需要让系统的内存使用率上升到超过20%, 可以用golang写一个简单的程序,让它占用很大的内存,从而使系统的内存使用率上升。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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就是这样的作用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #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的内存。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2018-08-03 [转] 一篇好文 ---steve jobs (stay hungry, stay foolish)
2018-08-03 【转】The && and || Operator in JavaScript
2018-08-03 shorthand trick with boolean expressions
2017-08-03 这本将shell的书应该不错
2017-08-03 linux sh 脚本调用外部命令
2016-08-03 论习惯的重要性
2016-08-03 cakephp 2.0 源码解读(一)