如何从远程服务器jvm获取堆转储?

如何从远程服务器jvm获取堆转储?,jvm,heap-dump,Jvm,Heap Dump,如何从运行在带有WL application server的linux上的远程JVM获取EAP转储 当我在windows机器上本地运行时,我知道如何获取转储。但是,如何从用户验收测试服务器获取转储?提前感谢。您可以使用连接到远程应用程序服务器(应该提前启用),并使用允许进行堆转储的MBean。 您可以使用JConsole或JVisualVM调用MBean操作。 Mike Haller的这篇文章描述了如何在JVisualVM中使用此方法。因为它是一个*nix系统,如果您拥有必要的特权,那么使用SS

如何从运行在带有WL application server的linux上的远程JVM获取EAP转储

当我在windows机器上本地运行时,我知道如何获取转储。但是,如何从用户验收测试服务器获取转储?提前感谢。

您可以使用连接到远程应用程序服务器(应该提前启用),并使用允许进行堆转储的MBean。
您可以使用JConsole或JVisualVM调用MBean操作。

Mike Haller的这篇文章描述了如何在JVisualVM中使用此方法。

因为它是一个*nix系统,如果您拥有必要的特权,那么使用SSH协议连接将很容易:

  • 连接到远程计算机:

    ssh user@remote-machine-ip-address
    
  • 提示输入用户密码后,请输入该密码(该密码应为远程计算机上的用户而不是当前系统用户的密码)

  • 使用
    jmap
    实用程序生成堆转储(JDK二进制文件路径应可用于系统路径变量或使用其完整路径):

    jmap-dump:format=b,file=cheap.bin
    
    • 有三个步骤:

    • ssh连接到您的服务器
    • ssh@

    • jmap触发内存转储
    • jmap-dump:format=b,file=

    • 通过jhat可视化堆(这里512m是大小限制,您可以根据泄漏的文件大小设置它,如-J-Xmx2g)
    • jhat-J-Xmx512m

      jhat-端口7401


      我写了一篇博客来帮助分析性能问题:

      我通常使用SSH连接到它,并且do-itJRE没有jmap实用工具,只有JDK附带了jmap。@anjanb感谢您的注释,我已经更新了答案:)
      jmap -dump:format=b,file=cheap.bin <pid>