你的位置:首页 > 网海拾贝

JAVA虚拟机监视的各种工具浅谈

2017-03-14 浏览:(227) 网海拾贝 评论(0)

1 jps 【运行的进程】

作用:列举出执行的进程信息。

[root@localhost ~]# jps -q
34744
40321
[root@localhost ~]# jps -m
34744 Bootstrap start
40341 Jps -m
[root@localhost ~]# jps -l
40361 sun.tools.jps.Jps
34744 org.apache.catalina.startup.Bootstrap
[root@localhost ~]# jps -v
34744 Bootstrap -Djava.util.logging.config.file=/opt/web/mobile.x.x.x/8102/conf/logging.properties -Xms6000M -Xmx6000M -Xmn2000M -XX:PermSize=500M -XX:MaxPermSize=500M -XX:+AggressiveOpts -XX:+UseAdaptiveSizePolicy -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:ParallelGCThreads=12 -XX:ParallelGCThreads=12 -Dsun.rmi.transport.connectionTimeout=1000 -Dsun.rmi.transport.tcp.responseTimeout=5000 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8849 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.251.17 -Djava.endorsed.dirs=/opt/web/mobile.x.x.x/8102/endorsed -Dcatalina.base=/opt/web/mobile.x.x.x/8102 -Dcatalina.home=/opt/web/mobile.x.x.x/8102 -Djava.io.tmpdir=/opt/web/mobile.x.x.x/8102/temp
40386 Jps -Denv.class.path=.:/usr/java/jdk1.6/lib/tools.jar -Dapplication.home=/usr/java/jdk1.6 -Xms8m

2 jstat 【一段时间以内的统计信息】

主要是统计信息

[root@localhost 8102]# jstat -class 40479
Loaded  Bytes  Unloaded  Bytes     Time  
  2514  5280.2        0     0.0       1.14
[root@localhost 8102]# jstat -gc  40479
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT  
204800.0 204800.0  0.0    0.0   1638400.0 1048649.3 4096000.0     0.0     512000.0 20272.0      0    0.000   0      0.000    0.000
[root@localhost 8102]# jstat -gccapacity  40479
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC
2048000.0 2048000.0 2048000.0 204800.0 204800.0 1638400.0  4096000.0  4096000.0  4096000.0  4096000.0 512000.0 512000.0 512000.0 512000.0      0     0
[root@localhost 8102]# jstat -gcutil  40479
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT  
  0.00   0.00  64.00   0.00   3.96      0    0.000     0    0.000    0.000
[root@localhost 8102]# jstat -gccause  40479
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC                
  0.00   0.00  64.00   0.00   3.96      0    0.000     0    0.000    0.000 No GC                No GC              
[root@localhost 8102]# jstat -gcnew  40479
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
204800.0 204800.0    0.0    0.0 15  15    0.0 1638400.0 1048649.3      0    0.000
[root@localhost 8102]# jstat -gcold  40479
   PC       PU        OC          OU       YGC    FGC    FGCT     GCT  
512000.0  20280.9   4096000.0         0.0      0     0    0.000    0.000
[root@localhost 8102]# jstat -gcnewcapacity  40479
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
 2048000.0  2048000.0  2048000.0 204800.0 204800.0 204800.0 204800.0  1638400.0  1638400.0     0     0

3. jinfo [配置信息]

查询进程的配置信息,可以动态调整

[root@localhost 8102]# jinfo -flag CMSInitiatingOccupancyFraction 40479
-XX:CMSInitiatingOccupancyFraction=-1

4  jmap 【某个时间点的内存映像】

[root@localhost 8102]# jmap -heap 40479
Attaching to process ID 40479, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.1-b02

using parallel threads in the new generation.
using thread-local object allocation.
Mark Sweep Compact GC

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 6291456000 (6000.0MB)
   NewSize          = 2097152000 (2000.0MB)
   MaxNewSize       = 2097152000 (2000.0MB)
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 524288000 (500.0MB)
   MaxPermSize      = 524288000 (500.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 1887436800 (1800.0MB)
   used     = 1208046816 (1152.0832214355469MB)
   free     = 679389984 (647.9167785644531MB)
   64.00462341308594% used
Eden Space:
   capacity = 1677721600 (1600.0MB)
   used     = 1208046816 (1152.0832214355469MB)
   free     = 469674784 (447.9167785644531MB)
   72.00520133972168% used
From Space:
   capacity = 209715200 (200.0MB)
   used     = 0 (0.0MB)
   free     = 209715200 (200.0MB)
   0.0% used
To Space:
   capacity = 209715200 (200.0MB)
   used     = 0 (0.0MB)
   free     = 209715200 (200.0MB)
   0.0% used
tenured generation:
   capacity = 4194304000 (4000.0MB)
   used     = 0 (0.0MB)
   free     = 4194304000 (4000.0MB)
   0.0% used
Perm Generation:
   capacity = 524288000 (500.0MB)
   used     = 20789552 (19.826461791992188MB)
   free     = 503498448 (480.1735382080078MB)
   3.9652923583984374% used
[root@localhost 8102]#

5 jhat 【与jmap合作】

6 jstack [查看某时刻的运行栈]

"catalina-exec-4" daemon prio=10 tid=0x00007f8f9800e000 nid=0xa059 waiting on condition [0x00007f8f73dfc000]
   java.lang.Thread.State: WAITING (parking)
 at sun.misc.Unsafe.park(Native Method)
 - parking to wait for  <0x00000006e6c06020> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
 at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
 at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
 at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
 at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
 at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32)
 at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
 at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
 - None

"catalina-exec-3" daemon prio=10 tid=0x00007f8f9800a800 nid=0xa058 waiting on condition [0x00007f8f73efd000]
   java.lang.Thread.State: WAITING (parking)
 at sun.misc.Unsafe.park(Native Method)
 - parking to wait for  <0x00000006e6c06020> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
 at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
 at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
 at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
 at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
 at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32)
 at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
 at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
 - None

JConsole

可以理解为上面所有命令的可视化工具

  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。