问题 我们正在尝试找到我们Web应用程序中一个大的内存泄漏的罪魁祸首。我们对于查找内存泄漏的经验非常有限,但是我们找到了如何使用jmap制作Java堆转储文件并在Eclipse MAT中进行分析。 然而,当我们的应用程序使用56/60GB内存时,堆转储文件只有16GB大小,甚至在Eclip...
我们最近遇到了一个JVM崩溃的情况,留下了由gcore命令产生的核心转储文件。我们想查看文件内容并找出导致崩溃的原因。 使用jmap命令,您可以将核心转储文件转换为hprof文件格式,然后可以使用VisualVM和许多其他工具进行分析。我尝试过这样做,并收到了错误消息。这是我运行的命令(在发...
我正在尝试使用jmap和jhat追踪Java进程中的内存泄漏。每次这样做时,我都会看到特定对象类型的奇怪符号表示,比如[S表示字符串数组,[C表示字符数组。我从来不记得什么意思,而且很难通过谷歌查找相关信息。 (编辑:为了证明我的观点,结果发现[S是short数组,[C是char数组。) ...
我想知道使用jmap命令检查Java进程的堆大小,输出格式如下所示:jmap -heap <pid>。其中包含了堆配置和堆使用情况两部分信息。堆配置包括最小和最大堆空闲比率、最大堆大小、新生代大小、Eden空间大小、老年代大小等。堆使用情况包括了新生代和老年代的使用情况,其中新生代...
我正在使用jmap获取堆的直方图。 我不确定被称为“[C”,“[S”,“[I”和“[B”的对象是什么。 有人知道吗?$ jmap -histo 3299 num #instances #bytes class name ----------------------...
我理解新生代/老年代/永久代的区别,但是我不知道"To Space"和"From Space"是什么。我看到我的"From Space"使用率达到了99.8%,而"To Space"似乎总是保持在0%使用率。
我有一个Java程序,它不断调用java.util.zip来压缩/解压数据。它在几秒钟内就会用完内存。我使用jmap生成了一个内存转储文件,并使用jhat查看它。 最终器总结显示待终结的实例总数:0。如果我理解正确,我没有任何对象符合以下条件:(1)具有finalize()方法,(2)被GC...
我正在使用以下命令创建堆转储: jmap -dump:file=DumpFile.txt <process-id> 我已经打开了生成的文件 - DumpFile.txt,但它不是可读格式。因此,请告诉我如何分析生成文件中的数据。
我们的GlassFish实例每两周会出现一个java.lang.OutOfMemoryError:PermGen space错误而崩溃。我将PermGen空间增加到512MB,并使用jstat -gc开始转储内存使用情况。两周后,我得到了以下图表,显示PermGen空间稳步增加(x轴单位为分钟...
我正在排查一个奇怪的内存泄漏问题。它仅在Java8中发生,在7u79上没有发生。我无法访问Java代码。我知道哪个用户操作会导致内存泄漏,我知道这个泄漏与类有关(而非堆),并且可以通过+TraceClassLoading +TraceClassUnloading轻松找到有问题的类:[Loade...