gpt4 book ai didi

java : Get heap dump without jmap or without hanging the application

转载 作者:IT王子 更新时间:2023-10-28 23:37:24 27 4
gpt4 key购买 nike

在少数情况下,我们的应用程序使用了大约 12 GB 的内存。我们尝试使用 jmap 实用程序获取堆转储。由于应用程序正在使用一些 GB 的内存,它会导致应用程序停止响应并导致生产出现问题。

在我们的例子中,堆使用量在 6 小时内突然从 2-3 GB 增加到 12 GB。为了找出内存使用趋势,我们尝试在重新启动应用程序后每隔一小时收集一次堆转储。但如前所述,由于使用 jmap 会导致应用程序挂起,我们需要重新启动它,并且我们无法获得内存使用的趋势。

有没有办法在不挂起应用程序的情况下获取堆转储,或者是否有除 jmap 之外的实用程序来收集堆转储。

对此的想法非常感谢,因为如果不了解内存使用趋势,则很难解决此问题。

注意:我们的应用程序在 CentOS 中运行。

谢谢,阿伦

最佳答案

试试下面的。它带有 JDK >= 7:

/usr/lib/jvm/jdk-YOUR-VERSION/bin/jcmd PID GC.heap_dump FILE-PATH-TO-SAVE

例子:

/usr/lib/jvm/jdk1.8.0_91/bin/jcmd 25092 GC.heap_dump /opt/hd/3-19.11-jcmd.hprof

这个转储过程比用 jmap 转储快得多!转储文件要小得多,但足以让您了解泄漏的位置。

在撰写此答案时,Memory Analyzer 和 IBM HeapAnalyzer 存在错误,它们无法从 jmap(jdk8、大文件)读取转储文件。您可以使用 Yourkit 读取这些文件。

关于 java : Get heap dump without jmap or without hanging the application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832793/

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