我有一个java程序,在这个程序中,我对一个类的对象进行了相当多的操作。该对象是在for循环中创建的,该循环运行有限次。循环完成后,我调用System.gc()来清空堆中的已用空间。但是任务管理器中的进程java.exe仍然使用更多的内存。有没有办法找到存储在进程中的内容?或者有没有什么方法可以执行转储并以可读的形式进行比较?
发布于 2013-05-21 19:34:42
你的java.exe不会释放它分配的内存。垃圾收集只是将其释放给java程序中的其他进程。
如果您对这个主题感兴趣,那么您应该阅读一些关于Java内部内存处理的文档。它太复杂了,在这里不能正确地回答。
发布于 2013-05-21 19:37:29
尝试使用Java profiler (例如,jvisualvm,它随JDK一起提供)。您可以连接到正在运行的应用程序并检查堆上的内容。
https://stackoverflow.com/questions/16668980
复制相似问题