有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我的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在哪里?我如何诊断和修复它


共 (2) 个答案

  1. # 1 楼答案

    请检查此eclipse plugin以进行内存分析。安装后,它将提供不同的视图。在一个particular view中,它显示单个对象使用的内存。这将帮助您精确定位正在使用内存的对象

    编辑:我想我错过了非堆部分

  2. # 2 楼答案

    无堆比率是多少?您是否使用默认的70%和40%。可能有垃圾对象等待下一次gc运行收集。另外,可能java进程已经为自己分配了额外的内存(请阅读堆空闲率)

    也许Tuning Garbage Collection parameters in Java中提到的问题/答案/评论会提供一些帮助