Why does not the memory decrease in golang ?
当服务器启动时,它占用的内存大约是83MB,我检查了
服务器启动时,我查找堆信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # runtime.MemStats # Alloc = 7251528 # TotalAlloc = 52713992 # Sys = 15010040 # Lookups = 49 # Mallocs = 2072338 # Frees = 2038576 # HeapAlloc = 7251528 # HeapSys = 12025856 # HeapIdle = 2121728 # HeapInuse = 9904128 # HeapReleased = 0 # HeapObjects = 33762 # Stack = 425984 / 425984 # MSpan = 75504 / 81920 # MCache = 4800 / 16384 # BuckHashSys = 1457768 # NextGC = 11496656 |
当所有连接都关闭后,经过一段时间和GC,我再次查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # runtime.MemStats # Alloc = 5845912 # TotalAlloc = 13053679584 # Sys = 73128248 # Lookups = 794 # Mallocs = 22728491 # Frees = 22699056 # HeapAlloc = 5845912 # HeapSys = 60112896 # HeapIdle = 52166656 # HeapInuse = 7946240 # HeapReleased = 0 # HeapObjects = 29435 # Stack = 3719168 / 3719168 # MSpan = 88608 / 180224 # MCache = 4800 / 16384 # BuckHashSys = 1597264 # NextGC = 9428528 |
号
我不知道为什么它会减少这么少。因为我已经清除了保存在服务器中的变量。有人能给我一些关于如何找到问题的建议吗?
另外,我查过了,它不关心戈罗廷,戈罗廷的数量也没有增加。我已经使用pprof并打开gcdebug。
因为要缩小自己的记忆并不是完全可以的。Go垃圾收集器偶尔向操作系统发出释放未使用内存的请求。操作系统可能决定不释放内存,因为系统有足够的空闲空间,其他一些原因。
如果你真的担心你的应用程序占用了太多的内存或者内存泄漏,那么请注意随着时间的推移
另外,不要期望