内存泄漏

标签 java eclipse out-of-memory

有没有人使用 Eclipse 内存管理器来检测 java 代码中的内存泄漏?有人可以推荐一个寻找有关使用内存管理器的信息的好地方吗?我在网上看了一些东西,它建议我需要让程序运行直到它崩溃(发生内存不足错误),这将生成一个崩溃报告。然后使用内存管理器打开此报告,检查可能发生内存泄漏的位置。每个人都是这样使用内存管理器的吗?

最佳答案

虽然-XX:+HeapDumpOnOutOfMemoryError可能很有用,我当前使用 Eclipse 内存管理器的工作流程是:

  1. 正常运行程序
  2. 等待内存失控。
  3. 运行 jmap : jmap -dump:format=b,file=dump.hprof <PID>
  4. 在 EMM 中打开 hprof 文件。

我通常从直方图和支配 TreeView 开始工作,看看是否有任何异常,然后从那里向下钻取。

VisualVM 可能很有用,但在处理堆转储时似乎比 EMM 效率低得多(EMM 缓存了大量有关加载堆转储的信息)。 Netbeans Profiler 非常适合获取分配位置和时间分析。

关于内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1638011/

相关文章:

c# - TaskFactory.StartNew -> System.OutOfMemoryException

java - 反序列化 Google Web Kit 响应 (Java) 和 Java Servlet

java - Java 进程产生了数千个线程……为什么?

Java 泛型 Lambda 编译错误

java - 文本选取框不起作用

java - maven内存不足错误

java - 如何在不写入输出流的情况下从 ZipInputStream 获取每个 ZipFile 条目的字节/内容?

css - 浏览器内置的 eclipse 和 firefox 之间的 primefaces 仪表板小部件差异

eclipse - 如何从 Eclipse 的 clean 命令中排除文件

linux - 如何防止 Linux 内核在 RAM 即将耗尽时驱逐文件支持的可执行页面? (否则会导致磁盘抖动)