23得票2回答
为什么我的Java堆转储大小比已使用的内存要小得多?

问题 我们正在尝试找到我们Web应用程序中一个大的内存泄漏的罪魁祸首。我们对于查找内存泄漏的经验非常有限,但是我们找到了如何使用jmap制作Java堆转储文件并在Eclipse MAT中进行分析。 然而,当我们的应用程序使用56/60GB内存时,堆转储文件只有16GB大小,甚至在Eclip...

7得票5回答
为什么垃圾回收器没有清除我的对象?

我有一个Java程序,它不断调用java.util.zip来压缩/解压数据。它在几秒钟内就会用完内存。我使用jmap生成了一个内存转储文件,并使用jhat查看它。 最终器总结显示待终结的实例总数:0。如果我理解正确,我没有任何对象符合以下条件:(1)具有finalize()方法,(2)被GC...

66得票8回答
如何使用Java中的jmap分析堆转储

我正在使用以下命令创建堆转储: jmap -dump:file=DumpFile.txt <process-id> 我已经打开了生成的文件 - DumpFile.txt,但它不是可读格式。因此,请告诉我如何分析生成文件中的数据。

9得票1回答
jmap崩溃并显示“无法获取类数据”的错误信息。

我遇到了Java核心转储问题;使用以下命令运行jmap: /usr/java/jdk1.8.0_25/bin/jmap -dump:format=b,file=dump.hprof /usr/bin/java core.31497 给出以下异常: Attaching to core...

41得票4回答
在Java堆转储中,那些奇怪的类名是什么意思?

我正在尝试使用jmap和jhat追踪Java进程中的内存泄漏。每次这样做时,我都会看到特定对象类型的奇怪符号表示,比如[S表示字符串数组,[C表示字符数组。我从来不记得什么意思,而且很难通过谷歌查找相关信息。 (编辑:为了证明我的观点,结果发现[S是short数组,[C是char数组。) ...

27得票5回答
连接进程出错: sun.jvm.hotspot.debugger.DebuggerException: 无法打开二进制文件

当我使用jmap获取一个进程的堆信息时,出现了如下错误: $jmap -heap process_id Attaching to process ID process_id, please wait... Error attaching to process: sun.jvm.hotspo...

10得票2回答
定位填充PermGen的死Groovy代码的代码

我们的GlassFish实例每两周会出现一个java.lang.OutOfMemoryError:PermGen space错误而崩溃。我将PermGen空间增加到512MB,并使用jstat -gc开始转储内存使用情况。两周后,我得到了以下图表,显示PermGen空间稳步增加(x轴单位为分钟...

11得票5回答
Java:如何在不使用jmap或挂起应用程序的情况下获取堆转储

在某些情况下,我们的应用程序使用了大约12 GB的内存。我们尝试使用jmap实用程序获取堆转储。由于应用程序使用了一些GB的内存,它会导致应用程序停止响应并在生产中造成问题。 在我们的情况下,堆使用量突然从2-3 GB增加到12GB,需要在6小时内进行处理。为了找出内存使用趋势,我们尝试在重...

81得票8回答
我该如何在IntelliJ中分析堆转储文件?(内存泄漏)

我使用 jmap 工具从我的Java应用程序中生成了一个堆转储,该应用程序已经运行了几天 -> 这导致了一个大的二进制堆转储文件。 如何在 IntelliJ IDEA 中对此堆转储执行内存分析? 我知道 Eclipse 和 Netbeans 有工具,但如果可能的话,我宁愿使用 IDEA。 基本...

17得票2回答
使用JMAP生成堆转储时出现异常

当我使用jmap -F -dump:format=b,file=/tmp/heapdump/before.hprof 10737命令进行堆转储时,我会遇到以下异常:Attaching to process ID 10737, please wait... Exception in thread...