`

tomcat 产生heapdump文件配置

阅读更多

 

系统有时会遇到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>)

 

在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.ini to contain:

-vmargs
-Xmx2g
-XX:-UseGCOverheadLimit

Eclipse插件版打不开的朋友可以试试 RPC版的MAT (我的232m的dump文件也打不开,难道非得用64bit的机器吗?):RPC版MAT下载地址

 

JProfile

 

等等;

 

  • 大小: 5.6 KB
  • 大小: 5 KB
分享到:
评论

相关推荐

    解决tomcat内存溢出的配置方法

    此外,JVM的堆转储(Heap Dump)文件也能提供详细的内存占用信息,通过分析这些文件可以定位内存泄漏的具体对象。 5. **代码优化**:检查应用程序的代码,避免创建大量短生命周期但占用大量内存的对象,或者及时...

    tomcat内存泄漏备份方法

    - **heap dump**:通过JVM命令`jmap -dump`生成堆转储文件,然后使用分析工具查看内存中的对象分布,寻找可能的泄漏源头。 - **Tomcat日志**:检查Tomcat的日志文件,异常信息可能提示内存泄漏的存在。 4. **...

    tomcat 7 64位操作系统

    - 开启JVM的堆转储(heap dump)和线程转储(thread dump),分析内存泄漏或死锁问题。 7. **与其它应用服务器的集成**: - Tomcat可作为应用服务器在诸如Spring Boot、Apache Maven等框架中集成使用。 - 它也...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    例如,在 Linux 系统中,可以通过以下命令生成 dump 文件:`jmap -dump:format=b,file=HeapDump.bin &lt;pid&gt;`。 ##### 3.2 MAT 安装与使用 - **下载地址**:访问 [Eclipse MAT 官方网站]...

    tomcat out of memory

    - **分析heap dump文件**:当内存溢出发生时,可以通过JVM的`-XX:+HeapDumpOnOutOfMemoryError`参数生成堆转储文件,然后用专门的工具分析。 4. **预防措施**: - **定期监控**:定期检查Tomcat的内存使用,及时...

    weblogic参数.txt

    - **参数**:`-Xms888m -Xmx888m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -Xloggc:/home/weblogic/gc/app1gc.log` - **说明**...

    TOMCAT架构服务器优化指南

    2. 堆内存分析:定期做heap dump,利用MAT或JProfiler分析内存泄漏。 3. 日志分析:分析日志文件,找出性能瓶颈,如SQL查询慢、异常频繁等问题。 4. 调试技巧:学会使用断点、单步执行、变量查看等功能,定位代码...

    mat监控工具使用总结

    为了生成Heap Dump,需要在JVM启动参数中添加`-XX:+HeapDumpOnOutOfMemoryError`和`-XX:HeapDumpPath=&lt;dump_file_path&gt;`,前者设置在内存溢出时生成堆转储,后者指定文件保存位置。 ### 7. 测试类准备 编写简单的...

    tomcat调优

    - **堆转储**:定期生成heap dump文件,使用MAT(Memory Analyzer Tool)等工具进行分析。 **2. 解决内存泄漏的具体步骤** - **调整JVM参数**:根据实际情况调整JVM启动参数,如增加初始堆大小(`-Xms`)、最大堆...

    tomcat内存溢出

    2. **使用内存分析工具**:例如VisualVM、MAT(Memory Analyzer Tool)等,分析heap dump文件,找出占用内存最多的对象和类,定位问题源头。 3. **优化代码**:避免创建过多的大对象,及时释放不再使用的对象,尤其...

    memory analyzer 内存泄露

    MAT通过分析heap dump文件(即Java虚拟机的堆内存快照),提供详尽的内存使用报告,包括对象统计、支配树分析、疑似内存泄露集合等,以帮助我们识别那些占用大量内存但不再被程序需要的对象。 1. **MAT的使用方法**...

    mat工具测试类

    首先,MAT工具的核心功能是对heap dump文件进行分析。heap dump是Java虚拟机在内存溢出时生成的一种文件,包含了程序运行时的所有对象和类装载信息。通过对heap dump的分析,MAT可以提供以下关键信息: 1. **对象...

    解决Java_heap_space问题

    - 分析堆转储文件(heap dump),使用MAT(Memory Analyzer Tool)、Eclipse Memory Analyzer等工具找出内存泄漏的源头。 4. **优化垃圾回收策略** - 根据应用特性选择合适的垃圾回收器(如G1、CMS、Parallel等)...

    jvisualvm操作手册for linux菜鸟

    jvisualvm操作手册for linux菜鸟 ...此外,我们还可以使用Thread Dump和Heap Dump功能,快速查看Java程序的运行情况。 jvisualvm是一款功能强大的Java虚拟机监控工具,能够帮助我们实时监控服务器性能,快速排查问题。

    jmap jstat等命令介绍

    在Tomcat的内存监控中,最常用的功能是生成heap dump文件。通过`jmap -dump:format=b,file=heap.hprof &lt;pid&gt;`命令,我们可以将JVM的堆内存快照导出为一个二进制文件,用于后续的内存分析,找出可能的内存泄漏问题。...

    jvm工具、参数调优&调试技巧

    - **使用方法**:`jhat &lt;heapdumpfile&gt;` 或 `jhat -J&lt;options&gt; &lt;heapdumpfile&gt;`。 ##### 5. jmap:内存映像工具 - **功能**:`jmap` 可以获取堆内存的快照,并将其输出为一个文件,也可以显示堆中的对象信息。 - **...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    - 分析堆转储文件(heap dump),找出占用内存较大的对象集合。 **注意事项:** - 调整JVM参数时需谨慎,过大的堆可能会导致其他问题,如GC停顿时间增加。 - 应用程序设计时应考虑到资源的有效利用,避免无谓的内存...

    JVM调优工具11.pdf

    通过指定参数`-XX:+HeapDumpOnOutOfMemoryError`和`-XX:HeapDumpPath`,我们可以分别控制内存溢出时是否导出dump文件和设置导出文件的路径。 Jvisualvm是一个功能丰富的JVM监控、分析工具,它支持导入内存dump文件...

    JAVA性能分析

    1. **获取堆文件**: 使用Jvisualvm工具在远程服务器上生成堆文件`heapdump-xxxxxxxxxx.hprof`。 2. **使用MemoryAnalyzer分析**: MemoryAnalyzer是一款由Eclipse提供的免费内存分析工具,它可以独立使用也可以作为...

    Tomcat教程-JVM相关工具.docx

    jmap -dump:format=b,file=&lt;dump_file&gt; ``` 6. **jhat (Java Heap Analyzer Tool)**: jhat是与jmap配合使用的命令,用于分析由jmap生成的堆转储文件,以找出内存泄漏等问题。 7. **jconsole (Java Monitoring...

Global site tag (gtag.js) - Google Analytics