【问题标题】:Find the content of java.exe process apart from the HeapDump and ThreadDump查找除Heap Dump和Thread Dump之外的java.exe进程的内容
【发布时间】:2013-05-21 11:32:40
【问题描述】:

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

【问题讨论】:

    标签: java memory-management memory-leaks dump


    【解决方案1】:

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

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

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

    【讨论】:

    • 有什么方法可以检查 java.exe 进程内存中的内容吗?我将最大堆大小设置为 3MB,堆栈大小设置为 128k,但 java.exe 使用的内存约为 10MB。我怎样才能检查那里有什么?
    • @SantronManibharathi 您必须使用分析器。使用该关键字并阅读它的文档。这并不难,但要花时间了解您所看到的内容。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 2011-10-04
      • 2011-04-12
      • 1970-01-01
      • 2019-07-29
      • 2011-04-22
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      相关资源
      最近更新 更多