Java性能监控

  上次介绍了如何使用jvisualvm监控java,今天做进一步讲解!Java性能监控主要关注CPU、内存和线程。

  在线程页中,点击线程Dump,可以生成threaddump日志,通过分析java thread dump日志,可以了解线程的执行状态,能发现锁死(Deadlock)、等待资源(Waiting on condition)、阻塞(Blocked)等问题;

  在监视页中,点击堆Dump,可以生成heapdump日志,通过第三方工具(如HeapAnalyzer)打开来分析内存泄露的大致位置,协助开发分析定位问题。

  在抽样器页中,点击CPU,来查看哪些方法占用的cpu比较高。

  有的时候也需要在linux下查看哪些线程占用的cpu资源高,方法如下:

  1、用top命令查找出哪个进程消耗的cpu高
21125 co_ad2   18   0 1817m 776m 9712S  3.3  4.9 12:03.24java                                                                                          
5284co_ad    21   0 3028m 2.5g 9432S  1.0 16.3  6629:44java                                                                                          
21994mysql    15   0 449m  88m 5072 S 1.0  0.6  67582:38mysqld                                                                                        
8657 co_sparr 19   0 2678m 892m 9220S  0.3  5.7 103:06.13 java
  2、top中shift+h查找出哪个线程消耗的cpu高
  先输入top,然后再按shift+h
21233 co_ad2   15   0 1807m 630m 9492S  1.3 4.0   0:05.12java                                                                                          
20503 co_ad2_s 15   0 1360m 560m 9176S  0.3 3.6   0:46.72java                                                                                          
21134 co_ad2   15   0 1807m 630m 9492S  0.3 4.0   0:00.72java                                                                                          
22673 co_ad2   15   0 1807m 630m 9492S  0.3 4.0   0:03.12 java
注意21233线程是属于21125进程
  3、jstack查找这个线程的信息
jstack [进程]|grep -A 10 [线程的16进制]
即:
  jastack 21125|grep -A 10 52f1  

 

posted on 2016-01-06 10:10  TestWorld  阅读(1663)  评论(0编辑  收藏  举报