浏览 1234 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-11-19
当然,java api里边这个包的说明更值得参考 /java/lang/management/package-summary.html jdk bin下的 jconsole 和jvisualVm 这两个工具所实现的功能基本上都能够从这个包的类和方法里找到。 获取jvm 的 heapDump方法: 对于HotSpot虚拟机来说,可以利用rt.jar 里边的HotSpotDiagnosticMXBean 来获取 Java代码 bean = ManagementFactory.newPlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class); //注意此处的参数是 在目标虚拟机上的操作系统路径 ,而不是这个程序执行的操作系统的路径 特别是在取服务器上的时候,更要特别注意,同时也要注意权限等问题 bean.dumpHeap("a.hprof", true); bean = ManagementFactory.newPlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class); //注意此处的参数是 在目标虚拟机上的操作系统路径 ,而不是这个程序执行的操作系统的路径 特别是在取服务器上的时候,更要特别注意,同时也要注意权限等问题 bean.dumpHeap("a.hprof", true); 获取 ThreadDump方法: Java代码 ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy( mbs, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); // ThreadMXBean bean =ManagementFactory.getThreadMXBean(); for (ThreadInfo info : threadBean.dumpAllThreads(true, true)) //然后...你懂的 ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy( mbs, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); // ThreadMXBean bean =ManagementFactory.getThreadMXBean(); for (ThreadInfo info : threadBean.dumpAllThreads(true, true)) //然后...你懂的 获取GClog 在程序的启动参数中 配置 -verbose:gc -Xloggc:gc.log 当然 gc.log只是个文件名 你可以加上路径等等 呵呵。 另外发现 CodeCacheManager java.lang:type=MemoryManager,name=CodeCacheManager CodeCacheManager managed Code Cache PS Scavenge java.lang:type=GarbageCollector,name=PS Scavenge PS Scavenge managed PS Eden Space PS Scavenge managed PS Survivor Space PS MarkSweep java.lang:type=GarbageCollector,name=PS MarkSweep PS MarkSweep managed PS Eden Space PS MarkSweep managed PS Survivor Space PS MarkSweep managed PS Old Gen PS MarkSweep managed PS Perm Gen 居然PS MarkSweep 管理了 四个区域 呵呵 三个堆相关的 一个永久代 居然也是它负责.. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |