gpt4 book ai didi

java - 在 Java 中检测堆转储中的根本原因

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:46 26 4
gpt4 key购买 nike

在 Java 堆转储中,我如何确切知道代码中的哪个位置/哪个线程导致了转储?

最佳答案

读取内存转储:

我建议您尝试“eclipse 内存分析器” 来自 here

另一个选项(免费)是用 JVisualVM 打开它(在 $JAVA_HOME/bin 中可用)jhat 也很酷,但已经被推荐了:)

现在,您询问的是导致内存堆转储的线程,而不是询问如何进行内存转储...这取决于您如何获得内存转储。有多种获取转储的方法。

  1. 在您的进程中,您可以指示 JVM 在遇到 OutOfMemory 错误时生成内存转储,在这种情况下,我相信这将是 JVM 本身。

  2. 如果您有一个与 JVM 一起运行的 JMX 服务器,您可以从 MBean 触发堆转储创建 Example

  3. 您甚至可以在您的应用程序外部使用系统调用(在 Linux 上):kill -3 _YOUR_JAVA_PROCESS_ID_ 将生成堆转储。

但我很难想象你为什么需要这样的信息。稍后在评论中你提到了“确切的代码行”,但这些方法通常在你的 JVM 外部......你确定你需要一行代码本身生成堆转储,或者你正在尝试确定真正的问题?

希望对你有帮助

关于java - 在 Java 中检测堆转储中的根本原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11790787/

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