1

我在 JBoss 中运行一个 Java 应用程序,它会定期执行内存密集型任务。org.jboss.Main 使用的内存量在此期间上升,但在任务完成后不会下降。我一直在使用 VisualVM 分析该过程并强制进行垃圾收集。org.jboss.Main 使用的内存保持在 1GB 左右。堆转储的基本信息如下。

Total bytes: 53,795,695
Total classes: 5,696
Total instances: 732,292
Classloaders: 324
GC roots: 2,540
Number of objects pending for finalization: 0

我还查看了使用内存的类,发现 char[] 占了大部分内存。

谁能告诉我为什么 VisualVM 显示 JBoss 使用的内存比我的活动监视器少 20 倍?如果有人可以提供任何建议或指导以进一步阅读如何让 JBoss 在工作完成后释放内存,那将不胜感激。

4

1 回答 1

1

VisualVM 在 Full GC 后显示堆的大小。这是在堆必须增长之前可以使用的数据量。

堆转储显示当前使用了多少堆。

于 2013-09-26T11:57:09.393 回答