查找除堆转储和线程转储之外的java.exe进程的内容

时间:2013-05-21 11:32:41

标签: java memory-management memory-leaks dump

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

2 个答案:

答案 0 :(得分:3)

您的java.exe将无法释放已分配的内存。垃圾收集只是为你的java程序中的其他进程释放它。

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

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

答案 1 :(得分:0)

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