强制或生成jvm核心转储(IBM JVM)

时间:2011-04-07 06:00:04

标签: java apache java-ee jvm websphere

  

可能重复:
  Can I force generation of a JVM crash log file?

如何在Java应用程序服务器上或一般情况下强制或生成JVM核心转储?

2 个答案:

答案 0 :(得分:20)

问题(摘要):要诊断与在WebSphere Application Server Community Edition上运行的客户应用程序的挂起或性能不佳相关的问题,将要求用户生成各种转储并将其发送给IBM支持诊断。

此技术说明解释了当WebSphere Application Server Community Edition作为操作系统服务运行时如何生成所需的转储。此技术说明适用于IBM Java SDK 1.5.0和IBM Java SDK 1.6.0

原因:客户应用程序在IBM Java SDK 1.5.0或IBM Java SDK 1.6.0上使用WebSphere Application Server Community Edition时出现挂起或性能不佳的情况,并且服务器作为操作系统运行服务,用户无法使用服务器进程的相应命令/ shell窗口。因此,无法从键盘发送用户信号以触发转储。

解决问题:当JVM流程命令窗口可用时,生成转储很简单,如下所示:

视窗: 如果JVM设置配置为在用户信号处触发转储,请在命令窗口中按CRTL+Break以生成转储。

Linux:如果JVM设置配置为根据用户信号生成转储,请在shell窗口中按CTRL+\

AIX:如果JVM设置配置为根据用户信号生成转储,请在shell窗口中按CTRL+\

注意:为了在用户信号下生成java核心转储,系统核心转储,堆转储和快照转储,必须通过JVM选项配置转储代理,如下所示:

-Xdump:java+heap+system+snap:events=user

有关如何配置转储代理的详细信息,请访问-Xdump

但是,如果WebSphere Application Server Community Edition作为操作系统服务运行,则命令窗口可能不可用。当在Windows上使用javaw.exe启动JVM进程时,也会出现这种情况。

在上述情况下,用户需要找到JVM进程的相应进程ID,并使用操作系统供应商提供的工具或IBM提供的工具按照以下步骤生成转储。

Windows:可以从Microsoft Dev工具站点下载WinDbg以生成系统核心转储。在WinDbg控制台上使用以下命令生成系统核心转储:

dump /f <dumpfile> 

其中dumpfile包含目录路径和系统核心转储文件的名称。 确保使用/f选项代替/ma/f生成完全转储,/ma生成小型转储。 IBM Java SDK 1.5.0 / 1.6.0提供的jextract工具仅支持完全转储。

适用于Windows的SendSignal实用程序。为此,必须设置JVM以生成用户信号的转储。要在用户信号处生成Java核心转储,堆转储,系统核心转储和快照转储,必须在启动时向JVM提供以下选项:

-Xdump:java+heap+system+snap:events=user 

注意:SendSignal实用程序可用于生成所有类型的转储,其中WinDbg仅生成系统核心转储。

Linux and AIX:Linux和AIX的信号为SIGQUIT。使用该命令发送用户信号以触发各种转储:

kill -3 <PID>  

为此,必须设置JVM以在用户信号上生成转储。要在用户信号下生成Java核心转储,堆转储,系统核心转储和快照池,必须在启动时向JVM提供以下选项。

-Xdump:java+heap+system+snap:events=user 

注意:必须使用jextract工具处理系统核心转储文件,并且必须将输出发送给IBM支持人员。应该使用来自遇到问题的同一JVM的jextract来处理系统核心转储:

<JAVA_HOME>/jre/bin/jextract <dumpfile>   

其中dumpfile是系统核心转储的文件名。

这将生成一个zip文件.zip。需要将zip文件发送给IBM支持人员。

答案 1 :(得分:-2)

如果您正在运行自己的代码,Q&amp; D方法是引发异常并立即打印其堆栈跟踪。如果没有,分析工具应该有方法捕获JVM中运行的线程的快照。 我使用了YourKit并喜欢它,但有free alternatives