歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> JAVA虛擬機監視的各種工具淺談

JAVA虛擬機監視的各種工具淺談

日期:2017/2/27 15:54:28   编辑:Linux教程
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
可以理解為上面所有命令的可視化工具
Copyright © Linux教程網 All Rights Reserved