gpt4 book ai didi

java - 是否可以创建堆转储来分析没有垃圾收集的内存泄漏?

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:49 24 4
gpt4 key购买 nike

我们在运行 Java 应用程序的生产环境中的 VM 上存在一些内存泄漏问题,Old Gen 堆使用量每天都在快速增长,所以我想创建堆转储来分析它。

但是,我注意到 VisualVM 会在堆转储之前执行完整的 GC,这将清理 Old Gen,在这种情况下,堆转储将毫无用处。

我还尝试使用以下命令:

jmap -dump:live,format=b,file=heap.bin

它还会触发一次完整的 GC。

请问是否有一种方法可以在没有完全GC(或没有GC)的情况下创建堆转储?或者有什么更好的方法来分析内存泄漏?

JDK 版本:1.7.0_45

谢谢。

最佳答案

标记为正确的答案不再正确。正如 Sumit 所说,只有在使用 live 选项时(在 histo 和 dump 操作中)才会导致 Full GC。

Java 7Java 8有这个选项

-histo[:live]

Prints a histogram of the heap. For each Java class, the number of objects, memory size in bytes, and the fully qualified class names are printed. The JVM internal class names are printed with an asterisk (*) prefix. If the live suboption is specified, then only active objects are counted.


-dump:[live,] format=b, file=filename

Dumps the Java heap in hprof binary format to filename. The live suboption is optional, but when specified, only the active objects in the heap are dumped. To browse the heap dump, you can use the jhat(1) command to read the generated file.

你也可以使用 jcmd带有操作 GC.heap_dump 和选项 -all

的命令

GC.heap_dump

Generate a HPROF format dump of the Java heap.

Impact: High: Depends on Java heap size and content. Request a full GCunless the '-all' option is specified.

Permission: java.lang.management.ManagementPermission(monitor)

Syntax : GC.heap_dump [options]

Arguments:

  • filename : Name of the dump file (STRING, no default value)

Options: (options must be specified using the or =syntax)

  • -all : [optional] Dump all objects, including unreachable objects (BOOLEAN, false)

示例:jcmd 3181 GC.heap_dump -all dump

您可以添加 -XX:+PrintGCDetails 标志来查看是否发生了 Full GC。例如,当我使用不带 -all 的 jcmd 时,我会看到类似这样的内容。

200,658: [Full GC (Heap Dump Initiated GC) 200,658: [CMS: 5040K->4158K(18432K), 0,0171885 secs] 11239K->4158K(25856K), [Metaspace: 18053K->18053K(1064960K)], 0,0173941 secs] [Times: user=0,01 sys=0,00, real=0,02 secs]

关于java - 是否可以创建堆转储来分析没有垃圾收集的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393480/

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