如何获得Java Heap dump数据?
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/
www.wowza.cn用JConsole获得Java heap dump 数据
  1. 使用JConsole/JMX 连接到正在运行Wowza Media Server
  2. 选择MBeans tab
  3. 选择com.sun.management/HotSpotDiagnostics 对象的Operation
  4. dumpHeap参数中输入下面的信息,然后点击dumpHeap按钮:
    Code:
    p0: [heap-output-path]
    p1: true - do a garbage collection before dump heap
    
    for example:
    p0: c:/dump.dmp
    p1: true


使用JHat命令获得Java heap dump 数据

  1. 打开命令行窗口,进入JDK的安装目录
  2. 使用操作系统提供的工具(例如Linux服务器上的 ps -ef 或者Windows上的任务管理器)找到运行Wowza Streaming Engine的Java进程ID。
  3. 执行以下命令:
    Code:
    jmap -dump:format=b,file=c:\Temp\mymemorydump.hprof [pid]

其中 [pid] 是Wowza服务进程的ID。


在下一次抛出OutOfMemory错误的时候自动输出Java heap dump 数据。www.wowza.cn

你也可以配置Java,让它在抛出OutOfMemory错误时输出Java heap dump。 www.wowza.cn 若要这么做,请编辑[install-dir]/bin/setenv.sh (或Windows服务器上的[install-dir]/bin/setenv.bat 或 [install-dir]/bin/WowzaMediaServer-Service.conf),添加以下到JAVA_OPTS:

Code:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=[path-to-heapdump]
其中,[path-to-heapdump] 是Java heap dump 文件保存的路径(例如 /opt)。

这里还有关于这一点的一些更详细的介绍:
http://stackoverflow.com/questions/5...dump-for-jboss

获得Java Heap dump文件后,将它上传到某个地方,让Wowza的技术支持团队可以下载下来帮你分析。www.wowza.cn

在生成Java Heap dump文件前强制垃圾回收,请先执行以下命令:

Code:
jcmd [pid] GC.run