【问题标题】:memory full but not garbage collection内存已满但没有垃圾回收
【发布时间】:2013-08-05 12:58:29
【问题描述】:

我有一个问题:Eden 100% used,Old 100% used,From Space 100% used,但没有触发垃圾回收,没有 oom

jmap -heap [pid] 结果

Eden Space:    
capacity = 859045888 (819.25MB)    
used     = 859045888(819.25MB)   
free     = 0 (0.0MB)
100.0% used 
From Space:    
capacity = 107347968 (102.375MB)    
used     = 12370032(11.796981811523438MB)    
free     = 16441280 (90.57801818847656MB)
0.0% used 
To Space:    
capacity = 107347968 (102.375MB)   
used     = 0 (0.0MB)    
free     = 107347968 (102.375MB)
 0.0% used 
PS Old generation:    
capacity = 1073741824 (1024.0MB)   
used     = 1073741816 (1023.0832290649414MB)    
free     = 8 (7.62399453125E-6MB)
 99.99999925494154% used 
Perm Generation:    
capacity = 268435456 (256.0MB)    
used     = 79784056 (76.08800506591797MB)    
free     = 188651400 (179.91199493408203MB)
 29.721876978874207% used

jstat -gcutil [pid] 1000
   S0     S1     E      O      P     YGC   YGCT    FGC    FGCT     GCT
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723

我的虚拟机参数是

-Xmx2g -Xms2g -Xmn1g -XX:SurvivorRatio=8 -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCacheSize=128m -XX:+DisableExplicitGC - XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:CMSInitiatingOccupancyFraction=80

如何解决?

【问题讨论】:

  • 为什么说没有GC。请添加-Xloggc:/path/to/file并添加内容。例如,您是否尝试过附加视觉虚拟机?
  • 要么你在上面的大杂烩中设法搞砸了 GC,要么你分配了很多你永远不会放手的东西。或者您根本没有存储问题,并且正在发生其他一些错误。 (您没有列出任何错误。)

标签: garbage-collection jvm


【解决方案1】:

为什么jvm parameters 这么复杂(您缺少-Xloggc:/path/to/file 以避免只是冗长的日志记录)。

我真的很难相信没有GC 被触发。如果我是你,你会从一个更容易理解的选项开始,然后从那里迭代。请记住,在大多数情况下,只需设置 XmsXmx 就足够了。因为heap 是基于比率,其余的由人体工程学来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多