我有一个java程序,其中我对一个类的对象进行了更多的操作。 Object在for循环中创建,该循环运行有限的时间。循环完成后,我调用System.gc()来清除Heap中的已用空间。但是任务管理器中的java.exe进程仍然使用更多的RAM。有没有办法找到流程中存储的内容?或者是否有任何方法来执行转储并以可读的形式进行比较?
答案 0 :(得分:3)
您的java.exe
将无法释放已分配的内存。垃圾收集只是为你的java程序中的其他进程释放它。
如果您对此主题感兴趣,您应该阅读一些有关Java内存处理的文档。它太复杂了,无法在这里得到适当的回答。
答案 1 :(得分:0)
尝试使用Java Profiler(例如随JDK一起提供的jvisualvm)。您可以连接到正在运行的应用程序并检查堆上的内容。