LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux教程 >

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

时间:2015-03-23 09:54来源:oschina 编辑:linuxeye 点击:
1 jps 【运行的进程】 作用:列举出执行的进程信息。[root@localhost ~]# jps -q3474440321[root@localhost ~]# jps -m34744 Bootstrap start40341 Jps -m[root@localhost ~]# jps -l40361 sun.tools.jps.Jps34744 org.apache.catalina.s
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
可以理解为上面所有命令的可视化工具

转载请保留固定链接: https://linuxeye.com/Linux/2318.html

------分隔线----------------------------
标签:java
栏目列表
推荐内容