tomcat 产生heapdump文件配置
2015-06-25 09:44
483 查看
系统有时会遇到OutOfMemoryError,Java堆溢出了。我们需要找到造成OutOfMemoryError原因。一般有两种情况:
1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收;
2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小(-Xmx与-Xms),检查代码是否存在对象生命周期太长、持有状态时间过长的情况。
想在泄漏未发生前,取堆转储文件分析, 通过jvm参数-XX:+HeapDumpOnOutOfMemoryError(XX:+HeapDumpOnCtrlBreak不知道为什么tomcat启动不了)可以让JVM在出现内存溢出是Dump出当前的内存转储快照。
当然也可以通过用jmap生产dump文件。windows通过任务管理器查看tomcat的进程pid,linux用ps命令查看进程pid,然后用jmap命令(Java5:jmap -heap:format=b <pid>;Java6:jmap -dump:format=b,file=HeapDump.bin <pid>)
2.加上:JAVA_OPTS="$JAVA_OPTS -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heapdump"
如下图位置:
注:其中不设-XX:HeapDumpPath时,dump出的文件在/tomcat_home/bin目录下
2.加上:set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heapdump
如下图位置:
分析dump出来的内存快照文件
可以使用分析工具进行分析,如:
Eclipse的MAT
下载地址:http://www.eclipse.org/mat/downloads.php
说明文档:http://www.vogella.com/articles/EclipseMemoryAnalyser/article.html#example_project
注意:解析过大的HeapDump可能导致Eclipse抛出OutOfMemory的错误。这时你需要手动调整Eclipse的缓存大小,可以参考官网给出的处理方式(原文连接)
Alternatively, edit the
-vmargs
-Xmx2g
-XX:-UseGCOverheadLimit
Eclipse插件版打不开的朋友可以试试 RPC版的MAT (我的232m的dump文件也打不开,难道非得用64bit的机器吗?):RPC版MAT下载地址 。
JProfile
等等;
转自:/article/4282112.html
1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收;
2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小(-Xmx与-Xms),检查代码是否存在对象生命周期太长、持有状态时间过长的情况。
想在泄漏未发生前,取堆转储文件分析, 通过jvm参数-XX:+HeapDumpOnOutOfMemoryError(XX:+HeapDumpOnCtrlBreak不知道为什么tomcat启动不了)可以让JVM在出现内存溢出是Dump出当前的内存转储快照。
当然也可以通过用jmap生产dump文件。windows通过任务管理器查看tomcat的进程pid,linux用ps命令查看进程pid,然后用jmap命令(Java5:jmap -heap:format=b <pid>;Java6:jmap -dump:format=b,file=HeapDump.bin <pid>)
在tomcat中设置jvm参数
linux系统中
1.打开/tomcat_home/bin/catalina.sh文件2.加上:JAVA_OPTS="$JAVA_OPTS -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heapdump"
如下图位置:
注:其中不设-XX:HeapDumpPath时,dump出的文件在/tomcat_home/bin目录下
Windows系统中
1.打开/tomcat_home/bin/catalina.bat文件2.加上:set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heapdump
如下图位置:
分析dump出来的内存快照文件
可以使用分析工具进行分析,如:
Eclipse的MAT
下载地址:http://www.eclipse.org/mat/downloads.php
说明文档:http://www.vogella.com/articles/EclipseMemoryAnalyser/article.html#example_project
注意:解析过大的HeapDump可能导致Eclipse抛出OutOfMemory的错误。这时你需要手动调整Eclipse的缓存大小,可以参考官网给出的处理方式(原文连接)
Alternatively, edit the
MemoryAnalyzer.inito contain:
-vmargs
-Xmx2g
-XX:-UseGCOverheadLimit
Eclipse插件版打不开的朋友可以试试 RPC版的MAT (我的232m的dump文件也打不开,难道非得用64bit的机器吗?):RPC版MAT下载地址 。
JProfile
等等;
转自:/article/4282112.html
相关文章推荐
- Tomcat映射路径(应用程序基本目录)的配置方法
- 在服务器上同时启动多个tomcat
- 在catalina.bat中设置tomcat的debug接口
- 利用Tomcat1.8实现Mysql数据库连接池
- Server at localhost was unable to start within 45 seconds
- Apache Tomcat Architecture
- tomcat中安装的问题
- Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理图 1.Tomcat 的总体结构
- tomcat下的work工作夹作用原理
- Linux下配置Tomcat使用普通用户启动Daemon进程
- eclipse 删除 tomcat8 重新添加的问题
- 一键发布多个端口tomcat,重启脚本等
- Linux自动删除tomcat日志文件
- 【转】Tomcat版本是32位、64位问题
- tomcat绑定域名
- WEB_容器_tomcat_工作原理_待
- 傻瓜式tomcat发布:Windows远程控制Linux服务器发布Tomcat WEB程序
- eclipse中tomcat不能使用debug模式修改java文件
- 在Tomcat下指定Jsp生成的Java文件路径