0

我有一个 java 程序,我在其中对一个类的对象进行了更多的操作。对象是在运行有限时间的 for 循环内创建的。循环完成后,我调用 System.gc() 来清除堆中的已用空间。但是任务管理器中的进程 java.exe 仍然使用更多的 RAM。有什么方法可以找到进程中存储的内容吗?或者是否有任何方法可以执行转储并以可读形式进行比较?

4

2 回答 2

3

java.exe不会释放它曾经分配过的内存。垃圾收集只是为您的 java 程序内部的其他进程释放它。

如果你对这个主题感兴趣,你应该阅读一些关于 Java 内存处理的文档。它太复杂了,无法在这里适当地回答。

在这里查看一些指针:https ://softwareengineering.stackexchange.com/questions/176880/which-part-of-the-memory-is-used-for-the-garbage-collector

于 2013-05-21T11:34:42.030 回答
0

尝试使用 Java 分析器(例如 jvisualvm 随 JDK 一起提供)。您可以连接到正在运行的应用程序并检查堆上的内容。

于 2013-05-21T11:37:29.200 回答