jvm分析篇---1、先认识下dump材料

jvm分析篇---1、先认识下dump材料

目录

一、简介

二、生成方式

三、Java Web项目配置参数

四、最佳实践

一、简介Dump文件是JVM在运行过程中生成的内存快照文件,主要用于诊断Java应用的内存问题(如内存泄漏、OOM错误)和线程状态分析。在Java Web项目中,常见的dump文件类型包括:

堆Dump(Heap Dump) 记录JVM堆内存中所有对象的详细信息,包括对象类型、引用关系和内存占用。 $$ \text{文件大小} \approx \text{堆内存使用量} $$线程Dump(Thread Dump) 捕获所有线程的瞬时状态(如调用栈、锁状态),用于分析死锁或线程阻塞问题。二、生成方式自动触发

OOM错误时生成:通过JVM参数配置(见第三节)JVM崩溃时生成:如Native代码导致的崩溃(hs_err_pid.log)手动触发

# 生成堆Dump

jmap -dump:format=b,file=heapdump.hprof

# 生成线程Dump

jstack -l > threaddump.txt

通过 jps 或 ps -ef | grep java 获取

通过工具触发

JVisualVM / JConsole 的"Heap Dump"按钮Arthas的 heapdump / thread 命令Linux信号:kill -3 生成线程Dump到标准输出三、Java Web项目配置参数在应用服务器启动脚本中(如Tomcat的catalina.sh或catalina.bat)添加JVM参数:

# 基础配置示例(Tomcat)

JAVA_OPTS="$JAVA_OPTS

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=/opt/dumps/webapp_heapdump.hprof

-XX:ErrorFile=/opt/dumps/hs_err_pid%p.log

-XX:+PrintGCDetails

-Xloggc:/opt/dumps/gc.log"

参数作用推荐值-XX:+HeapDumpOnOutOfMemoryErrorOOM时自动生成堆Dump必开启-XX:HeapDumpPath指定堆Dump保存路径绝对路径(确保写权限)-XX:ErrorFileJVM崩溃日志路径%p 表示进程ID-XX:+CrashOnOutOfMemoryErrorOOM时强制崩溃生成完整Dump可选-XX:OnOutOfMemoryError触发自定义脚本如 kill -3 %p四、最佳实践路径配置

-XX:HeapDumpPath=/var/dumps/${webapp_name}_%t.hprof

%t 自动添加时间戳,避免覆盖

监控集成

使用APM工具(如SkyWalking、Pinpoint)自动捕获Dump日志系统监控 java.lang.OutOfMemoryError 关键字分析工具

Eclipse MAT:分析堆Dump内存泄漏FastThread:在线分析线程Dump java -jar mat.app/Contents/MacOS/MemoryAnalyzer heapdump.hprof

安全策略

限制Dump文件访问权限(避免敏感数据泄露)定期清理旧文件(通过cron任务)注:生产环境建议配置-XX:+ExitOnOutOfMemoryError防止故障扩散,同时确保Dump路径磁盘空间充足(通常预留2倍堆内存空间)。

相关推荐

小明看看永久免费:哪些坑要避?这5点你要提前知道
什么崖壁填动词(什么崖什么壁的成语)(5个)
熟喂、生喂、干喂这三种喂猪方法
经常精神不振是什么原因