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

如何从作为Windows服务运行的Tomcat6获取堆转储以分析内存泄漏?

获取Windows服务运行的Tomcat6堆转储(JDK6环境)

不用额外工具的话,完全可以靠JDK6自带的命令行工具搞定,步骤很明确:

1. 找到Tomcat服务对应的进程ID(PID)

Tomcat以Windows服务运行时,对应的进程通常是javaw.exe,你需要确定它的PID:

  • 打开管理员权限的命令提示符,输入以下命令筛选关联Tomcat6服务的进程:
    tasklist /svc | findstr "Tomcat6"
    
    输出结果里的数字就是你要找的PID。
  • 如果上面的命令没返回结果,也可以直接列出所有javaw.exe进程,从服务名称里匹配Tomcat:
    tasklist /svc | findstr "javaw.exe"
    
    找到对应Tomcat服务的那一条,记下PID即可。

2. 用JDK6自带的jmap生成堆转储

JDK6的jmap工具在你JDK安装目录的bin文件夹下(比如C:\Program Files\Java\jdk1.6.0_xx\bin\jmap.exe),在命令提示符里执行:

jmap -dump:format=b,file=C:\temp\tomcat_heap_dump.hprof <你的Tomcat PID>
  • 参数说明:
    • format=b:指定生成二进制格式的堆转储文件(.hprof格式,后续可直接用JDK工具分析)
    • file=<路径>:设置堆转储文件的保存路径和文件名,建议选磁盘空间充足的目录
    • <PID>:替换成你刚才找到的Tomcat进程ID

关键注意事项

  • 必须保证jmap和Tomcat运行的JDK版本完全一致:Tomcat用JDK6,就必须用JDK6的jmap,版本不匹配会导致命令执行失败。
  • 一定要用管理员身份打开命令提示符:否则可能没有权限访问Tomcat服务的进程,无法生成堆转储。
  • 堆转储文件大小基本和Tomcat的堆内存设置相当,要确保目标目录有足够空间。

生成的.hprof文件可以用JDK6自带的jhat工具分析,比如执行jhat C:\temp\tomcat_heap_dump.hprof,然后访问http://localhost:7000就能查看内存分析结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:36:07