在 Tomcat 运行 OutOfMemory 时获取堆转储

Get the heap dump when Tomcat runs OutOfMemory

我想获取 hprof 文件(转储)来分析 OOME。

应用程序部署在 tomcat,它是 运行 作为 windows 服务。我用这个 link 来更改我的 catalina.bat 文件,还尝试放置一个 setenv.bat 文件。 然后我在应用程序中手动生成内存不足。

我可以看到应用程序内存不足,但从未创建转储,我在这里遗漏了什么吗?

然而在我的本地开发环境中,当我使用 jvisualvm 创建转储时,转储已成功创建。

我尝试了很多东西,最后我发现当 tomcat 服务作为服务启动时 tomcat.exe 设置环境变量 catalina.bat 将没有效果,为此 tomcat 提供了 tomcat7w.exe 这存在于 /bin 目录中。

但是在将 tomcat 配置为 windows 服务时,您将该服务的名称更改为 fooBar 然后您需要将 tomcat7w.exe 重命名为 fooBarw.exe然后可以在控制台配置不同的变量window.