- Java Heap Dump 是什么?
我们知道Java Heap 是所有类实例和数组对象分配的一个运行时数据区,其间所有Java VM线程在执行期间共享Heap 中的数据。那么一个Java heap dump相当于在一个特殊的时间点上生成的一个快照,它就像给一个繁忙的数据仓库在给定的时间上来了一个照片,我们通过这张快照可以识别哪些组件在那快照的那时间点上是可用的。
由于Java 说明文档并没有提及到Java heap dump,在各个不同的JVM厂商,存在各个对Java heap dump的介绍。 如IBM JVM的Java heap dump 提供的信息大至和Java Heap差不多。
Sun公司提供的信息基本上是JVM Stack,运行时常量池和Java Heap等.
如何生成Java Heap Dumps ?
Java Heap Dumps通常是由JVM自动生成,不过您也可以强制生成Java Heap Dumps。在大多数IBM的JVM上。Java Heap Dumps 在当Java Heap 用完前自动生成。在大多数Sun 公司的JVM上,你需要在JVM上配置以生成Java Heap dumps. 如果你想在java.lang.OutOfMemory出现时生成,你需要在某些Sun的发行版的JVM配置 –XX:+HeapDumpOnOutOfMemoryError 参数选项. 你同样需要配置 –agentlib:phrof=heap=dump选项来使用HPROF。如果JVM提供, 你可以使用jmap工具, 比如:jmap –dump 1234 将从进程号1234上生成Java heap dump. 你可以通过调用HotSpotDiagnostic MBean和dumpHeap 来利用JConsole来监视内存。
如果你想在IBM的JVMs上给JVM崩溃或是用户信号生成Java heap dumps, 你可以配置环境变量 IBM_HEAPDUMP和IBM_HEAP_DUMP置为TRUE. 如:可以在给IBM JVM发送一个SIGQUIT信号
具体请参阅你的JVM说明文档以获得更多信息,因为由于平台与厂商的不同,选项会有所变化。
在哪可以找到Java Heap Dumps ?
您可以在JVM进程的当前工作目录下找到Java heap dumps,除非你指定了另外的目录位置。
您可以在IBM JVMs上通过环境变量指定目录位置: IBM_HEAPDUMPDIR 和 _CEE_DEPTARG.
如果没有足够的空间给指定的目录,或JVM在指定目录下未获取写权限, Java Heap dumps 将会在操作系统的临时目录下生成。 关于操作系统的默认临时目录位置和配置信息,请参阅你的操作系统手册。
Java Heap Dump
最新推荐文章于 2023-12-15 20:45:57 发布