问题: 如何定位系统上内存泄漏的问题?
描述:

因为系统隔三岔五地出现问题,每次都重启服务器就能解决了,所以我想是不是系统里面存在内存泄漏,但是对操作系统这方面一窍不通,百度了一下,用了jmap -heap pid输出了以下参数,本人只能看到From Space的使用率特别高,其他的几个使用率也不低,但是具体有没有毛病就不太清楚了,恳求各位大佬帮忙看一下哪些参数有异常。谢谢。

zsdx@HXTEST01:/etc/tomcat8/logs$ sudo jmap -heap 948
Attaching to process ID 948, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 1038090240 (990.0MB)
   NewSize                  = 21495808 (20.5MB)
   MaxNewSize               = 346030080 (330.0MB)
   OldSize                  = 43515904 (41.5MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 161480704 (154.0MB)
   used     = 96519472 (92.04814147949219MB)
   free     = 64961232 (61.95185852050781MB)
   59.771520441228695% used
From Space:
   capacity = 24641536 (23.5MB)
   used     = 24184032 (23.063690185546875MB)
   free     = 457504 (0.436309814453125MB)
   98.14336249168883% used
To Space:
   capacity = 40370176 (38.5MB)
   used     = 0 (0.0MB)
   free     = 40370176 (38.5MB)
   0.0% used
PS Old Generation
   capacity = 159907840 (152.5MB)
   used     = 82973360 (79.12956237792969MB)
   free     = 76934480 (73.37043762207031MB)
   51.88823762487193% used


解决方案1:

没见到OOM基本就不是内存泄露(但是可能是其他资源有问题)
这里配了最大堆1g,但是貌似只用了不到400m…所以看不出有内存泄露

解决方案2:

看一下old里面积压的对象就知道了,哪些对象一直被创建就是不销毁,然后看什么地方持有那些对象的引用。

上一篇springboot docker挂载目录的问题
下一篇java 为什么在代码块里不用声明变量的类型
明星图片
相关文章
《 如何定位系统上内存泄漏的问题?》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)