You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式Tomcat 7触发OOM时无法自动生成Heap Dump求助

解决嵌入式Tomcat 7 OOM自动生成Heap Dump的问题

针对你在STS中配置嵌入式Tomcat 7时,OOM自动生成Heap Dump失败的情况,我整理了以下可行方案:

一、核心JVM参数确认

首先确保你配置了正确的JVM参数,这是自动生成Heap Dump的关键:

  • -XX:+HeapDumpOnOutOfMemoryError:触发OutOfMemoryError时自动生成Heap Dump文件
  • -XX:HeapDumpPath=<绝对路径>:指定Dump文件的保存路径(必须保证Tomcat进程对该路径有读写权限)

示例完整参数:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\dev\heapdumps\tomcat_oom.hprof

二、STS中配置VM参数的正确步骤

如果你的嵌入式Tomcat是通过STS的「Java Application」启动(比如Spring项目嵌入Tomcat):

  1. 右键你的项目 → 「Run As」→ 「Run Configurations...」
  2. 在左侧列表找到对应的「Java Application」启动项
  3. 切换到「Arguments」标签页
  4. 在「VM arguments」输入框中添加上述JVM参数,点击「Apply」再启动项目

如果是通过Maven的tomcat7-maven-plugin启动嵌入式Tomcat:
需要在项目的pom.xml中配置插件的JVM参数:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <!-- 添加OOM自动Dump参数 -->
                <jvmArguments>-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\dev\heapdumps\tomcat_maven_oom.hprof</jvmArguments>
                <!-- 其他Tomcat配置 -->
                <port>8080</port>
            </configuration>
        </plugin>
    </plugins>
</build>

三、验证配置是否生效

可以写一段简单的测试代码手动触发OOM,验证Dump文件是否生成:

import java.util.ArrayList;
import java.util.List;

public class OOMTest {
    public static void main(String[] args) {
        List<byte[]> memoryHog = new ArrayList<>();
        // 不断分配内存直到触发OOM
        while (true) {
            memoryHog.add(new byte[1024 * 1024]); // 每次分配1MB内存
        }
    }
}

运行这段代码后,检查你指定的HeapDumpPath路径下是否生成了.hprof文件。

四、常见问题排查

  • 路径问题:不要用相对路径,否则Dump文件可能生成在STS的工作目录(比如项目根目录或STS安装目录),建议用绝对路径
  • 权限问题:确保指定的路径有读写权限(比如避免写入C:\Windows这类系统目录),可以选择用户目录或临时目录
  • 参数拼写错误:JVM参数大小写敏感,检查是否把HeapDumpOnOutOfMemoryError拼错(比如少写字母r)
  • 启动方式不匹配:如果用Maven插件启动,必须在插件配置里加参数,VM参数配置不会生效

内容的提问来源于stack exchange,提问作者AR1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:42:30