linux tomcat dump文件,tomcat 如何产生heapdump文件

本文介绍如何在Windows、Linux、Solaris和AIX环境下配置Tomcat,使其能够在内存溢出时或手动触发时生成heap dump文件。通过设置特定的JVM参数,可以帮助开发者诊断内存泄漏等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tomcat 如何产生heapdump文件

1.

windows & Linux:

修改运行脚本的javaw 到java,并且添加参数-XX:+HeapDumpOnCtrlBreak。

运行程序后,按ctrl+break, 就可以得到heapdump文件。

-Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=c:\heapdump

2.

solaris:

首先在运行的脚本中添加参数-XX:+HeapDumpOnCtrlBreak。

利用ps -ef | grep java 找到运行程序的进程号。

输入命令kill -3 ,就可以得到heapdump文件。

或者: kill -QUIT

-Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError

3.

AIX

(1) choose one cluster member, set the following before

this server start:

在was启动前设置下面环境变量(可以加在启动脚本中)

export IBM_HEAPDUMP=true

export IBM_HEAP_DUMP=true

export IBM_HEAPDUMP_OUTOFMEMORY=true

export IBM_HEAPDUMPDIR=

path>

export IBM_JAVADUMP_OUTOFMEMORY=true

(2)please use set command to make sure you do not have

DISABLE_JAVADUMP parameter

then start this cluster member.

用set命令检查参数设置,确保没有设置DISABLE_JAVADUMP,然后启动server

(3)when you find free memory < 50% when no

heavy access, please run kill -3

执行kill -3

命令可以生成javacore文件和heapdump文件(pid为was

java进程的id号,可以用ps -ef|grep java 查到),可以多执行几次.

e.g. 例如

Types of OutOfMemoryError in Java

1) Java.lang.OutOfMemoryError: Java heap space

2) Java.lang.OutOfMemoryError: PermGen space

http://javarevisited.blogspot.com/2011/09/javalangoutofmemoryerror-permgen-space.html

How to solve Java.lang.OutOfMemoryError: PermGen space

export JVM_ARGS="-Xmx1024m -XX:MaxPermSize=256m"

How to solve java.lang.OutOfMemoryError: Java heap space

export JVM_ARGS="-Xms1024m -Xmx1024m"

# Set juli LogManager config file if it is present and an override has not been issued

#JAVA_OPTS="$JAVA_OPTS -server -Xms1024M -Xmx1024M -Xss128m -XX:PermSize=128M -XX:MaxPermSize=512M"

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate=fales -Dcom.sun.management.jmxremote.ssl=fales -Djava.awt.headless=true"

#JAVA_OPTS="$JAVA_OPTS -server -Xms1024M -Xmx1024M"

JAVA_OPTS="$JAVA_OPTS -server -Xms1024M -Xmx1024M -Xmn128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0 -XX:+PrintHeapAtGC -Xloggc:gc.log -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:+PerfBypassFileSystemCheck -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/user/tomcat6/apache-tomcat-6.0.35/bin"

### 在 Tomcat 中生成内存转储文件dump)的方法 在 Tomcat 中生成内存转储文件dump)可以通过多种方式实现,具体取决于操作系统和使用的 Java 版本。以下是几种常见的方法: #### 方法一:通过配置 `catalina.bat` 或 `catalina.sh` 在 Windows 系统中,可以通过修改 Tomcat 的启动脚本 `catalina.bat` 来启用内存转储功能。将以下参数添加到 `JAVA_OPTS` 中: ```batch set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heapdump ``` 这会确保当发生 `OutOfMemoryError` 时,Tomcat 自动生成一个 heap dump 文件并存储在指定路径中[^1]。 在 Linux 系统中,可以编辑 `catalina.sh` 文件,并添加类似的 JVM 参数: ```bash export JAVA_OPTS="$JAVA_OPTS -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump" ``` #### 方法二:使用 `jmap` 命令手动生成 dump 文件 如果需要手动生成 dump 文件,可以使用 `jmap` 工具。首先需要获取 Tomcat 进程的 PID: - 在 Windows 系统中,可以通过任务管理器查看 Tomcat 的进程 ID。 - 在 Linux 系统中,可以使用以下命令查找 Tomcat 的 PID: ```bash ps -ef | grep tomcat ``` 然后运行以下命令生成 dump 文件: - 对于 Java 5: ```bash jmap -heap:format=b <pid> ``` - 对于 Java 6 及更高版本: ```bash jmap -dump:format=b,file=HeapDump.bin <pid> ``` 这将生成一个名为 `HeapDump.bin` 的文件,其中包含 Tomcat 当前的内存状态[^3]。 #### 方法三:通过发送信号生成 dump 文件Linux 系统中,可以通过发送信号的方式生成 dump 文件。例如,发送 `SIGQUIT` 信号(通常是 `kill -3`)可以生成线程转储(thread dump): ```bash kill -3 <pid> ``` 这会将线程转储信息输出到 Tomcat 的日志文件中。如果需要生成核心转储文件(Core Dump),可以配置系统以允许生成 Core Dump 文件[^4]。 #### 方法四:通过 JVM 参数启用内存泄漏分析 如果需要更详细的分析,可以使用 `-Xrunhprof` 参数来生成包含更多信息的 dump 文件。例如: ```bash java -Xrunhprof:heap=dump,format=b,file=java.hprof -jar tomcat_jvm_thread_demo-1.0-SNAPSHOT.jar ``` 这会在指定路径下生成一个 `java.hprof` 文件,可用于进一步分析内存使用情况[^2]。 ### 注意事项 - 确保 dump 文件的存储路径有足够的磁盘空间,因为这些文件可能非常大。 - 在生产环境中生成 dump 文件可能会对性能产生一定影响,建议在非高峰时段进行。 - 使用工具如 Eclipse MAT(Memory Analyzer Tool)或 VisualVM 分析生成的 dump 文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值