我正在查看 2 个时间点之间的 Java 进程的堆直方图。尽管内存使用量急剧增加,但在第二份报告中我没有看到我曾经拥有的最大对象。
Mon Oct 7 10:01:27 PHT 2013
...
Size Count Class description
-------------------------------------------------------
850635192 9666309 org.drools.reteoo.LeftTuple
63220392 1556524 char[]
35109792 1462908 java.lang.String
Mon Oct 7 16:01:29 PHT 2013
...
Size Count Class description
-------------------------------------------------------
76589736 2190862 char[]
52513032 2188043 java.lang.String
org.drools.reteoo.LeftTuple 之前一直位居榜首。由于列表中前 20 名的总和仅占内存消耗的 10% 左右,我认为它仍然存在,但由于某种原因没有报告。
背后的原因可能是什么,请记住 Java 进程几乎没有内存?是否处于产生不一致报告的状态?
如果有帮助,这里是老一代的信息。
Mon Oct 7 10:01:27 PHT 2013
...
PS Old Generation
capacity = 985661440 (940.0MB)
used = 846694760 (807.4710464477539MB)
free = 138966680 (132.5289535522461MB)
85.90117515401637% used
Mon Oct 7 16:01:29 PHT 2013
...
PS Old Generation
capacity = 2239758336 (2136.0MB)
used = 2239758328 (2135.9999923706055MB)
free = 8 (7.62939453125E-6MB)
99.99999964281861% used