gpt4 book ai didi

java - 在 Java 中如何查看堆中的内容?

转载 作者:太空狗 更新时间:2023-10-29 22:43:22 26 4
gpt4 key购买 nike

我在开发的 Java 应用程序中遇到了内存“泄漏”。在运行我的 JUnit 测试套件时,我随机遇到内存不足异常 (java.lang.OutOfMemoryError)。

我可以使用什么工具来检查我的 Java 应用程序的堆,以查看什么用完了我的所有堆,以便我可以找出是什么保留了对应该能够被垃圾收集的对象的引用。

最佳答案

VisualVM 包含在最新的 Java 版本中。您可以使用它来创建堆转储,并查看其中的对象。

或者,您也可以使用 jmap(在您的 jdk/bin 目录中)创建堆转储命令:

jmap -dump:format=b,file=heap.bin <pid>

您甚至可以使用它来快速获取所有对象的直方图

jmap -histo <pid>

我可以推荐 Eclipse Memory Analyzer ( http://eclipse.org/mat ) 来对堆转储进行高级分析。它可以让您准确地找出某个对象或一组对象存活的原因。这是一个向您展示内存分析器可以做什么的博客条目:http://dev.eclipse.org/blogs/memoryanalyzer/2008/05/27/automated-heap-dump-analysis-finding-memory-leaks-with-one-click/

关于java - 在 Java 中如何查看堆中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/145922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com