sun jdk 下如何生成heapdump文件
以Tomcat为例:
在tomcat启动脚本中增加 HeapDumpOnOutOfMemoryError 参数
此参数需要Java SE release 5.0 update 7 或以上支持
设置示例:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx800m -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError
测试内存溢出时可以把-Xms和-Xmx等的值相应调低即可.
文件默认产生在tomcat/bin目录下
如增加HeapDumpOnCtrlBreak Option就可以通过ctrl+break或收到SIGQUIT生成heapdump文件
此参数需要Java SE release 5.0 update 14 或以上支持
设置示例:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx800m -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak
参数介绍:
HeapDumpOnOutOfMemoryError 参数:
The -XX:+HeapDumpOnOutOfMemoryError command-line option was introduced in Java SE release
5.0 update 7. This option tells the HotSpot VM to generate a heap dump when the first thread throws a
java.lang.OutOfMemoryError because the Java heap or the permanent generation is full. There is
no overhead in running with this option, and so it can be useful for production systems where
OutOfMemoryError takes a long time to surface.
The heap dump is in HPROF binary format, and so it can be anaylzed by any tool that can import this
format, for example the Heap Analysis Tool (HAT).
By default the heap dump is created in a file called java_pid<pid>.hprof in the working directory
of the VM, where <pid> is the process ID. You can specify an alternative file name or directory with
the -XX:HeapDumpPath= option. For example, -XX:HeapDumpPath=/disk2/dumps will cause the
heap dump to be generated in the /disk2/dumps directory.
HeapDumpOnCtrlBreak 参数:
The -XX:+HeapDumpOnCtrlBreak command-line option was introduced in Java SE release 5.0 update 14. This option tells the HotSpot VM to generate a heap dump when a Ctrl-Break or SIGQUIT signal
is received. This provides a way to trigger a heap dump on demand.
The heap dump is in HPROF binary format, and so it can be anaylzed by any tool that can import this
format, for example the Heap Analysis Tool (HAT). The heap dump contains only live objects.
By default the heap dump is created in a file called java_pid<pid>.hprof.<yyyymmdd>.<hhmmss>
in the working directory of the VM, where <pid> is the process ID, and <yyyymmdd>.<hhmmss> is the
approximate time when the heap dump was generated.
You can specify an alternative file name or directory with the -XX:HeapDumpPath= option. For
example, -XX:HeapDumpPath=/disk2/dumps will cause the heap dump to be generated in the
/disk2/dumps directory.
If both the -XX:+HeapDumpOnCtrlBreak and -XX:+PrintClassHistogram options are enabled, the
heap dump and the heap histogram are obtained from the same heap snapshot.
详见JavaTM 2 Platform, Standard Edition 5.0 Troubleshooting and Diagnostic Guide
http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf
分享到:
相关推荐
- **参数**:`-Xms888m -Xmx888m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -Xloggc:/home/weblogic/gc/app1gc.log` - **说明**...
2. **jmap**:这是一个命令行工具,用于生成堆转储文件(heap dump),这对于分析内存占用和查找内存泄漏至关重要。通过jmap,开发者可以获取到JVM在特定时刻的详细内存状态。 3. **jhat**:Java Heap Analysis ...
它能提供堆内存的详细信息,包括对象统计、类加载器信息、堆dump文件生成等。对于Java开发者来说,掌握jmap的使用能够帮助我们更好地诊断和解决内存相关的故障,尤其是Java运行时堆栈信息的获取和分析。 1. **jmap...
在Tomcat的内存监控中,最常用的功能是生成heap dump文件。通过`jmap -dump:format=b,file=heap.hprof <pid>`命令,我们可以将JVM的堆内存快照导出为一个二进制文件,用于后续的内存分析,找出可能的内存泄漏问题。...
1. **获取堆文件**: 使用Jvisualvm工具在远程服务器上生成堆文件`heapdump-xxxxxxxxxx.hprof`。 2. **使用MemoryAnalyzer分析**: MemoryAnalyzer是一款由Eclipse提供的免费内存分析工具,它可以独立使用也可以作为...
通过指定参数`-XX:+HeapDumpOnOutOfMemoryError`和`-XX:HeapDumpPath`,我们可以分别控制内存溢出时是否导出dump文件和设置导出文件的路径。 Jvisualvm是一个功能丰富的JVM监控、分析工具,它支持导入内存dump文件...
3. **线程转储(Thread Dump)**:通过生成线程转储文件,开发者可以查看在特定时刻所有线程的详细信息,包括调用栈,这有助于定位导致阻塞或挂起的问题。 4. **堆转储(Heap Dump)**:当遇到内存泄漏问题时,可以使用...
jstack是一款命令行工具,用于生成Java应用程序的崩溃dump文件的信息。该工具可以attach到正在运行的Java应用程序中,查看当前运行的Java应用程序的Java Stack和Native Stack的信息。如果当前运行的Java应用程序呈现...
`-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/log/tomcat/3171001R-server`会在出现OOM错误时生成堆转储文件,帮助分析问题原因。 其他的JVM参数如`-XX:SurvivorRatio`、`-XX:MaxTenuringThreshold`等...
5. 堆内存转储:提供生成Heap Dump的功能,以便于分析内存泄漏。 6. 系统属性和虚拟机参数:展示Java虚拟机的相关信息,包括系统属性、JVM参数等。 四、源码解析 JConsole的源码主要分布在`src/share/classes/...
- **日志记录**:记录详细的日志信息,特别是在发生OOM时的堆转储文件(dump file)。 - **代码审查**:检查代码逻辑,寻找可能引起内存泄漏的部分。 #### 六、使用分析工具解决内存不足和内存泄漏错误 - **...
除了IBM的工具和文档,还有其他技术资源如Sun(现为Oracle)的JDK自带的VisualVM和jconsole,以及其他第三方工具如Eclipse Memory Analyzer (MAT),JProfiler和YourKit等,这些工具均可以用来监控Java应用的内存使用...
- **进行堆转储**:在怀疑存在内存泄漏的情况下,可以通过jVisualVM进行堆转储(Heap Dump)。随后,可以将不同时间点的堆转储文件进行比较,找出哪些对象在持续增长。 - **对比两个堆转储文件**:使用“与另一个堆...
对于SUN JDK而言,在Windows和Linux操作系统中采用了“一对一”线程模型。 **内核线程方式:** 1. 如果操作系统内核包含线程调度器,则可由内核直接调度内核线程并将线程任务映射到各个CPU上。 2. 应用程序不能...
堆转储(Heap Dump)是记录堆内存快照的工具,用于分析内存占用情况。 4. **垃圾收集(GC)的工作原理** 垃圾收集器自动检测并回收不再可达的对象,释放内存空间。GC通常采用“停止世界”模式运行,即在执行GC期间...
- **-XX:<option>=**:给选项设置一个字符串值,例如`-XX:HeapDumpPath=./dump.core`。 #### 行为选项详解 ##### -XX:-AllowUserSignalHandlers - **默认值**:限于Linux和Solaris,默认不启用。 - **描述**:...