我的Java内存到哪里去了?
我正在从Ant或Eclipse运行JUnit测试套件。PermGen限制为200 MB,堆限制为1000 MB
Java VisualVM报告分配的PermGen为200 MB,分配的堆为350 MB。那是550MB
但是,此进程的总虚拟集大小为2.5 GB,驻留集大小为1.8 GB。我知道应该有一些开销,但是如果PermGen和heap是0.5 GB,而进程使用1.8 GB,那么缺少的1.3 GB在哪里?我如何诊断和修复它
你可以在下面搜索框中键入要查询的问题!
我正在从Ant或Eclipse运行JUnit测试套件。PermGen限制为200 MB,堆限制为1000 MB
Java VisualVM报告分配的PermGen为200 MB,分配的堆为350 MB。那是550MB
但是,此进程的总虚拟集大小为2.5 GB,驻留集大小为1.8 GB。我知道应该有一些开销,但是如果PermGen和heap是0.5 GB,而进程使用1.8 GB,那么缺少的1.3 GB在哪里?我如何诊断和修复它
# 1 楼答案
请检查此eclipse plugin以进行内存分析。安装后,它将提供不同的视图。在一个particular view中,它显示单个对象使用的内存。这将帮助您精确定位正在使用内存的对象
编辑:我想我错过了非堆部分
# 2 楼答案
无堆比率是多少?您是否使用默认的70%和40%。可能有垃圾对象等待下一次gc运行收集。另外,可能java进程已经为自己分配了额外的内存(请阅读堆空闲率)
也许Tuning Garbage Collection parameters in Java中提到的问题/答案/评论会提供一些帮助