问题描述
|
如何创建作为Windows服务运行的Java进程的内存转储?使用jVisualVM,jstack或jconsole之类的工具时,我看不到该进程,因为该服务使用系统帐户运行。
编辑:使用jVisualVM,我可以看到该过程,但是它仅显示一个“此JVM不支持。”
解决方法
要使用这些工具,您需要以与该服务相同的用户身份运行。如果您不希望使用此安全功能,则需要为服务器设置JMX以允许远程访问(该服务器也可以与其他用户在同一盒子上使用)
如果使用“ 0”创建低级内存转储,则将很难找到任何可以理解输出的工具。您需要使用Java工具来触发转储。
, 如果您使用的是Windows 7 / Vista,请以管理员身份运行
taskmgr
,找到您的进程,右键单击“创建内存转储”。如果其他工具也以管理员身份运行,则它们可能会正常工作。需要提升该进程以获取不是您自己的进程的内存转储。