經過這幾個命令再結合經常使用的文本處理工具(sed、awk)能夠快速查看到本身須要的數據。詳細分解以下:java
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個顯示當前全部java進程pid的命令,簡單實用,很是適合在linux/unix平臺上簡單察看當前java進程的一些簡單狀況。
ps命令咱們常常用到,這個命令主要是用來顯示當前系統的進程狀況。好比有哪些進程及其 id。jps命令也是同樣,它的做用是顯示當前系統的java進程狀況及其id號。咱們能夠經過它來查看咱們到底啓動了幾個java進程(由於每個java程序都會獨佔一個java虛擬機實例)以及他們的進程號(爲下面幾個程序作準備),並可經過opt來查看這些進程的詳細啓動參數。linux
用來查看全部的jvm進程,包括進程ID,進程啓動的路徑等。博主平時都是用ps過濾的。c++
jps [-q] [-mlvV] [<hostid>]
-q 安靜,只顯示pid,不顯示class名稱,jar文件名和傳遞給main 方法的參數 -m 輸出傳遞給main 方法的參數,在嵌入式jvm上多是null -l (顯示完整路徑) -v (顯示傳遞給JVM的命令行參數) -V (顯示經過flag文件傳遞給JVM的參數) hostid是主機id,默認localhost
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jps 4214 Bootstrap 18096 jar 26423 Jps [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jps -q 4214 18096 26438 [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jps -m 4214 Bootstrap start 18096 jar 26453 Jps -m [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jps -l 4214 org.apache.catalina.startup.Bootstrap 18096 logmon.jar 26468 sun.tools.jps.Jps [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jps -v 4214 Bootstrap -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.53/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms2560m -Xmx2560m -Xmn680m -Xss256k -XX:PermSize=240m -XX:MaxPermSize=240m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.53/endorsed -Dcatalina.base=/usr/local/apache-tomcat-7.0.53 -Dcatalina.home=/usr/local/apache-tomcat-7.0.53 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.53/temp 18096 jar -Xms64m -Xmx64m -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 26483 Jps -Denv.class.path=.:/usr/local/jdk/lib/dt.jar:/usr/local/jdk/lib/tools.jar -Dapplication.home=/usr/local/jdk1.7.0_55 -Xms8m [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jps -V 4214 Bootstrap 26512 Jps 18096 jar
jinfo命令用來輸出給定 java 進程的全部配置信息,包括 java 系統屬性和 jvm 命令行標記等web
負責觀察進程運行環境參數,包括Java System屬性和JVM命令行參數。當系統崩潰時,jinfo能夠從core文件裏面知道崩潰的Java應用程序的配置信息算法
jinfo [ option ] pid jinfo [ option ] executable core jinfo [ option ] [server-id@]remote-hostname-or-IP
-flags 打印命令行參數 -sysprops 打印系統屬性
pid 進程號 executable 產生 core dump 的 java executable core core file remote-hostname-or-IP 主機名或ip server-id 遠程主機上的debug server的惟一id
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jinfo 4214 # 這個命令包含了 JDK 和 JVM 運行起來時的一些屬性 Attaching to process ID 4214, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 Java System Properties: java.runtime.name = Java(TM) SE Runtime Environment java.vm.version = 24.55-b03 sun.boot.library.path = /usr/local/jdk1.7.0_55/jre/lib/amd64 shared.loader = java.vendor.url = http://java.oracle.com/ java.vm.vendor = Oracle Corporation path.separator = : file.encoding.pkg = sun.io java.vm.name = Java HotSpot(TM) 64-Bit Server VM java.util.logging.config.file = /usr/local/apache-tomcat-7.0.53/conf/logging.properties tomcat.util.buf.StringCache.byte.enabled = true sun.os.patch.level = unknown sun.java.launcher = SUN_STANDARD user.country = US user.dir = /home/apps/repair-web java.vm.specification.name = Java Virtual Machine Specification java.runtime.version = 1.7.0_55-b13 org.apache.catalina.startup.TldConfig.jarsToSkip = tomcat7-websocket.jar java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment os.arch = amd64 java.endorsed.dirs = /usr/local/apache-tomcat-7.0.53/endorsed line.separator = java.io.tmpdir = /usr/local/apache-tomcat-7.0.53/temp java.vm.specification.vendor = Oracle Corporation java.util.logging.manager = org.apache.juli.ClassLoaderLogManager java.naming.factory.url.pkgs = org.apache.naming os.name = Linux sun.jnu.encoding = UTF-8 java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib tomcat.util.scan.DefaultJarScanner.jarsToSkip = bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,websocket-api.jar,catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,jasper.jar,jasper-el.jar,ecj-*.jar,tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-jni.jar,tomcat-spdy.jar,tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,tomcat-jdbc.jar,tools.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,commons-math*.jar,commons-pool*.jar,jstl.jar,geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,jmx-tools.jar,jta*.jar,log4j.jar,log4j-1*.jar,mail*.jar,slf4j*.jar,xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,junit.jar,junit-*.jar,hamcrest*.jar,org.hamcrest*.jar,ant-launcher.jar,cobertura-*.jar,asm-*.jar,dom4j-*.jar,icu4j-*.jar,jaxen-*.jar,jdom-*.jar,jetty-*.jar,oro-*.jar,servlet-api-*.jar,tagsoup-*.jar,xmlParserAPIs-*.jar,xom-*.jar java.class.version = 51.0 java.specification.name = Java Platform API Specification sun.management.compiler = HotSpot 64-Bit Tiered Compilers os.version = 2.6.32-431.el6.x86_64 user.home = / org.apache.catalina.startup.ContextConfig.jarsToSkip = user.timezone = Asia/Shanghai catalina.useNaming = true java.awt.printerjob = sun.print.PSPrinterJob file.encoding = UTF-8 java.specification.version = 1.7 catalina.home = /usr/local/apache-tomcat-7.0.53 user.name = nobody java.class.path = /usr/local/apache-tomcat-7.0.53/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.53/bin/tomcat-juli.jar java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory package.definition = sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. java.vm.specification.version = 1.7 sun.arch.data.model = 64 sun.java.command = org.apache.catalina.startup.Bootstrap start java.home = /usr/local/jdk1.7.0_55/jre user.language = en java.specification.vendor = Oracle Corporation awt.toolkit = sun.awt.X11.XToolkit java.vm.info = mixed mode java.version = 1.7.0_55 java.ext.dirs = /usr/local/jdk1.7.0_55/jre/lib/ext:/usr/java/packages/lib/ext sun.boot.class.path = /usr/local/jdk1.7.0_55/jre/lib/resources.jar:/usr/local/jdk1.7.0_55/jre/lib/rt.jar:/usr/local/jdk1.7.0_55/jre/lib/sunrsasign.jar:/usr/local/jdk1.7.0_55/jre/lib/jsse.jar:/usr/local/jdk1.7.0_55/jre/lib/jce.jar:/usr/local/jdk1.7.0_55/jre/lib/charsets.jar:/usr/local/jdk1.7.0_55/jre/lib/jfr.jar:/usr/local/jdk1.7.0_55/jre/classes server.loader = java.vendor = Oracle Corporation catalina.base = /usr/local/apache-tomcat-7.0.53 file.separator = / java.vendor.url.bug = http://bugreport.sun.com/bugreport/ common.loader = ${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar sun.io.unicode.encoding = UnicodeLittle sun.font.fontmanager = sun.awt.X11FontManager sun.cpu.endian = little package.access = sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. sun.cpu.isalist = VM Flags: -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.53/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms2560m -Xmx2560m -Xmn680m -Xss256k -XX:PermSize=240m -XX:MaxPermSize=240m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.53/endorsed -Dcatalina.base=/usr/local/apache-tomcat-7.0.53 -Dcatalina.home=/usr/local/apache-tomcat-7.0.53 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.53/temp [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jinfo -sysprops 4214 # 包含 JDK 運行起來時的一些屬性 Attaching to process ID 4214, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 java.runtime.name = Java(TM) SE Runtime Environment java.vm.version = 24.55-b03 sun.boot.library.path = /usr/local/jdk1.7.0_55/jre/lib/amd64 shared.loader = java.vendor.url = http://java.oracle.com/ java.vm.vendor = Oracle Corporation path.separator = : file.encoding.pkg = sun.io java.vm.name = Java HotSpot(TM) 64-Bit Server VM java.util.logging.config.file = /usr/local/apache-tomcat-7.0.53/conf/logging.properties tomcat.util.buf.StringCache.byte.enabled = true sun.os.patch.level = unknown sun.java.launcher = SUN_STANDARD user.country = US user.dir = /home/apps/repair-web java.vm.specification.name = Java Virtual Machine Specification java.runtime.version = 1.7.0_55-b13 org.apache.catalina.startup.TldConfig.jarsToSkip = tomcat7-websocket.jar java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment os.arch = amd64 java.endorsed.dirs = /usr/local/apache-tomcat-7.0.53/endorsed line.separator = java.io.tmpdir = /usr/local/apache-tomcat-7.0.53/temp java.vm.specification.vendor = Oracle Corporation java.util.logging.manager = org.apache.juli.ClassLoaderLogManager java.naming.factory.url.pkgs = org.apache.naming os.name = Linux sun.jnu.encoding = UTF-8 java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib tomcat.util.scan.DefaultJarScanner.jarsToSkip = bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,websocket-api.jar,catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,jasper.jar,jasper-el.jar,ecj-*.jar,tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-jni.jar,tomcat-spdy.jar,tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,tomcat-jdbc.jar,tools.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,commons-math*.jar,commons-pool*.jar,jstl.jar,geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,jmx-tools.jar,jta*.jar,log4j.jar,log4j-1*.jar,mail*.jar,slf4j*.jar,xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,junit.jar,junit-*.jar,hamcrest*.jar,org.hamcrest*.jar,ant-launcher.jar,cobertura-*.jar,asm-*.jar,dom4j-*.jar,icu4j-*.jar,jaxen-*.jar,jdom-*.jar,jetty-*.jar,oro-*.jar,servlet-api-*.jar,tagsoup-*.jar,xmlParserAPIs-*.jar,xom-*.jar java.class.version = 51.0 java.specification.name = Java Platform API Specification sun.management.compiler = HotSpot 64-Bit Tiered Compilers os.version = 2.6.32-431.el6.x86_64 user.home = / org.apache.catalina.startup.ContextConfig.jarsToSkip = user.timezone = Asia/Shanghai catalina.useNaming = true java.awt.printerjob = sun.print.PSPrinterJob file.encoding = UTF-8 java.specification.version = 1.7 catalina.home = /usr/local/apache-tomcat-7.0.53 user.name = nobody java.class.path = /usr/local/apache-tomcat-7.0.53/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.53/bin/tomcat-juli.jar java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory package.definition = sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. java.vm.specification.version = 1.7 sun.arch.data.model = 64 sun.java.command = org.apache.catalina.startup.Bootstrap start java.home = /usr/local/jdk1.7.0_55/jre user.language = en java.specification.vendor = Oracle Corporation awt.toolkit = sun.awt.X11.XToolkit java.vm.info = mixed mode java.version = 1.7.0_55 java.ext.dirs = /usr/local/jdk1.7.0_55/jre/lib/ext:/usr/java/packages/lib/ext sun.boot.class.path = /usr/local/jdk1.7.0_55/jre/lib/resources.jar:/usr/local/jdk1.7.0_55/jre/lib/rt.jar:/usr/local/jdk1.7.0_55/jre/lib/sunrsasign.jar:/usr/local/jdk1.7.0_55/jre/lib/jsse.jar:/usr/local/jdk1.7.0_55/jre/lib/jce.jar:/usr/local/jdk1.7.0_55/jre/lib/charsets.jar:/usr/local/jdk1.7.0_55/jre/lib/jfr.jar:/usr/local/jdk1.7.0_55/jre/classes server.loader = java.vendor = Oracle Corporation catalina.base = /usr/local/apache-tomcat-7.0.53 file.separator = / java.vendor.url.bug = http://bugreport.sun.com/bugreport/ common.loader = ${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar sun.io.unicode.encoding = UnicodeLittle sun.font.fontmanager = sun.awt.X11FontManager sun.cpu.endian = little package.access = sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. sun.cpu.isalist = [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jinfo -flags 4214 # 包含 JVM 運行起來時的一些屬性 Attaching to process ID 4214, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.53/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms2560m -Xmx2560m -Xmn680m -Xss256k -XX:PermSize=240m -XX:MaxPermSize=240m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.53/endorsed -Dcatalina.base=/usr/local/apache-tomcat-7.0.53 -Dcatalina.home=/usr/local/apache-tomcat-7.0.53 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.53/temp
該命令打印java線程的堆棧跟蹤,能夠得知哪些線程被阻塞或正等待,以便於查找如線程死鎖的緣由apache
用來觀察 jvm 中當前全部線程的運行狀況和線程當前狀態。
當系統崩潰時,若是java程序崩潰生成core文件,jstack工具能夠用來得到core文件的java stack和native stack的信息,從而能夠輕鬆地知道java程序是如何崩潰和在程序何處發生問題。
當系統hung住時,jstack工具能夠附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息, 若是如今運行的java程序呈現hung的狀態,jstack是很是有用的。bootstrap
jstack [ option ] pid jstack [ option ] executable core jstack [ option ] [server-id@]remote-hostname-or-IP
-F 當’jstack [-l] pid’沒有相應的時候強制打印棧信息 -l 長列表. 打印關於鎖的附加信息,例如屬於java.util.concurrent的ownable synchronizers列表. -m 打印java和native c/c++框架的全部棧信息.
core 將被打印信息的core dump文件 remote-hostname-or-IP 遠程debug服務的主機名或ip server-id 惟一id,假如一臺主機上多個遠程debug服務 pid 須要被打印配置信息的java進程id,能夠用jps查詢
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstack -F 18096 Attaching to process ID 18096, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 Deadlock Detection: No deadlocks found. Thread 18105: (state = BLOCKED) Thread 18104: (state = BLOCKED) - java.lang.Object.wait(long) @bci=0 (Interpreted frame) - java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=135 (Interpreted frame) - java.lang.ref.ReferenceQueue.remove() @bci=2, line=151 (Interpreted frame) - java.lang.ref.Finalizer$FinalizerThread.run() @bci=16, line=189 (Interpreted frame) Thread 18103: (state = BLOCKED) - java.lang.Object.wait(long) @bci=0 (Interpreted frame) - java.lang.Object.wait() @bci=2, line=503 (Interpreted frame) - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=133 (Interpreted frame) Thread 18097: (state = BLOCKED) - java.lang.Thread.sleep(long) @bci=0 (Interpreted frame) - logmon.logmon.main(java.lang.String[]) @bci=262, line=200 (Interpreted frame) [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstack -F -l 18096 Attaching to process ID 18096, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 Deadlock Detection: No deadlocks found. Thread 18105: (state = BLOCKED) Locked ownable synchronizers: - None Thread 18104: (state = BLOCKED) - java.lang.Object.wait(long) @bci=0 (Interpreted frame) - java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=135 (Interpreted frame) - java.lang.ref.ReferenceQueue.remove() @bci=2, line=151 (Interpreted frame) - java.lang.ref.Finalizer$FinalizerThread.run() @bci=16, line=189 (Interpreted frame) Locked ownable synchronizers: - None Thread 18103: (state = BLOCKED) - java.lang.Object.wait(long) @bci=0 (Interpreted frame) - java.lang.Object.wait() @bci=2, line=503 (Interpreted frame) - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=133 (Interpreted frame) Locked ownable synchronizers: - None Thread 18097: (state = BLOCKED) - java.lang.Thread.sleep(long) @bci=0 (Interpreted frame) - logmon.logmon.main(java.lang.String[]) @bci=262, line=200 (Interpreted frame) Locked ownable synchronizers: - None [root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstack -m 18096 Attaching to process ID 18096, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 Deadlock Detection: No deadlocks found. ----------------- 18097 ----------------- 0x00000034aa60b98e __pthread_cond_timedwait + 0x13e 0x00007ffe57d44174 _ZN2os5sleepEP6Threadlb + 0x254 0x00007ffe57bac662 JVM_Sleep + 0x342 0x00007ffe4d012738 * java.lang.Thread.sleep(long) bci:0 (Interpreted frame) 0x00007ffe4d006058 * logmon.logmon.main(java.lang.String[]) bci:262 line:200 (Interpreted frame) 0x00007ffe4d0004e7 <StubRoutines> 0x00007ffe57b274b5 _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x365 0x00007ffe57b25f18 _ZN9JavaCalls4callEP9JavaValue12methodHandleP17JavaCallArgumentsP6Thread + 0x28 0x00007ffe57b5f109 _ZL17jni_invoke_staticP7JNIEnv_P9JavaValueP8_jobject11JNICallTypeP10_jmethodIDP18JNI_ArgumentPusherP6Thread + 0x219 0x00007ffe57b68192 jni_CallStaticVoidMethod + 0x162 0x00007ffe5839b6d9 JavaMain + 0x7e9 ----------------- 18098 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57a7e953 _ZN13GCTaskManager8get_taskEj + 0x43 0x00007ffe57a80018 _ZN12GCTaskThread3runEv + 0x188 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18099 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57a7e953 _ZN13GCTaskManager8get_taskEj + 0x43 0x00007ffe57a80018 _ZN12GCTaskThread3runEv + 0x188 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18100 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57a7e953 _ZN13GCTaskManager8get_taskEj + 0x43 0x00007ffe57a80018 _ZN12GCTaskThread3runEv + 0x188 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18101 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57a7e953 _ZN13GCTaskManager8get_taskEj + 0x43 0x00007ffe57a80018 _ZN12GCTaskThread3runEv + 0x188 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18102 ----------------- 0x00000034aa60b98e __pthread_cond_timedwait + 0x13e 0x00007ffe57d05dde _ZN7Monitor5IWaitEP6Threadl + 0x39e 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57ec9649 _ZN8VMThread4loopEv + 0x339 0x00007ffe57ec9950 _ZN8VMThread3runEv + 0x70 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18103 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d32a4d _ZN13ObjectMonitor4waitElbP6Thread + 0x9bd 0x00007ffe57ba4148 JVM_MonitorWait + 0x168 0x00007ffe4d012738 * java.lang.Object.wait(long) bci:0 (Interpreted frame) 0x00007ffe4d006058 * java.lang.Object.wait() bci:2 line:503 (Interpreted frame) 0x00007ffe4d006058 * java.lang.ref.Reference$ReferenceHandler.run() bci:46 line:133 (Interpreted frame) 0x00007ffe4d0004e7 <StubRoutines> 0x00007ffe57b274b5 _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x365 0x00007ffe57b25f18 _ZN9JavaCalls4callEP9JavaValue12methodHandleP17JavaCallArgumentsP6Thread + 0x28 0x00007ffe57b261e7 _ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandleP6SymbolS4_P17JavaCallArgumentsP6Thread + 0x197 0x00007ffe57b26307 _ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandleP6SymbolS5_P6Thread + 0x47 0x00007ffe57ba2215 _ZL12thread_entryP10JavaThreadP6Thread + 0xe5 0x00007ffe57e7c70f _ZN10JavaThread17thread_main_innerEv + 0xdf 0x00007ffe57e7c815 _ZN10JavaThread3runEv + 0xf5 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18104 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d32a4d _ZN13ObjectMonitor4waitElbP6Thread + 0x9bd 0x00007ffe57ba4148 JVM_MonitorWait + 0x168 0x00007ffe4d012738 * java.lang.Object.wait(long) bci:0 (Interpreted frame) 0x00007ffe4d006058 * java.lang.ref.ReferenceQueue.remove(long) bci:44 line:135 (Interpreted frame) 0x00007ffe4d006233 * java.lang.ref.ReferenceQueue.remove() bci:2 line:151 (Interpreted frame) 0x00007ffe4d006233 * java.lang.ref.Finalizer$FinalizerThread.run() bci:16 line:189 (Interpreted frame) 0x00007ffe4d0004e7 <StubRoutines> 0x00007ffe57b274b5 _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x365 0x00007ffe57b25f18 _ZN9JavaCalls4callEP9JavaValue12methodHandleP17JavaCallArgumentsP6Thread + 0x28 0x00007ffe57b261e7 _ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandleP6SymbolS4_P17JavaCallArgumentsP6Thread + 0x197 0x00007ffe57b26307 _ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandleP6SymbolS5_P6Thread + 0x47 0x00007ffe57ba2215 _ZL12thread_entryP10JavaThreadP6Thread + 0xe5 0x00007ffe57e7c70f _ZN10JavaThread17thread_main_innerEv + 0xdf 0x00007ffe57e7c815 _ZN10JavaThread3runEv + 0xf5 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18105 ----------------- 0x00000034aa60d930 sem_wait + 0x30 0x00007ffe57d3c7a5 _ZL19signal_thread_entryP10JavaThreadP6Thread + 0x95 0x00007ffe57e7c70f _ZN10JavaThread17thread_main_innerEv + 0xdf 0x00007ffe57e7c815 _ZN10JavaThread3runEv + 0xf5 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18106 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d06336 _ZN7Monitor4waitEblb + 0x2a6 0x00007ffe579774d8 _ZN12CompileQueue3getEv + 0x128 0x00007ffe5797b5ca _ZN13CompileBroker20compiler_thread_loopEv + 0x13a 0x00007ffe57e7c70f _ZN10JavaThread17thread_main_innerEv + 0xdf 0x00007ffe57e7c815 _ZN10JavaThread3runEv + 0xf5 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18107 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d06336 _ZN7Monitor4waitEblb + 0x2a6 0x00007ffe579774d8 _ZN12CompileQueue3getEv + 0x128 0x00007ffe5797b5ca _ZN13CompileBroker20compiler_thread_loopEv + 0x13a 0x00007ffe57e7c70f _ZN10JavaThread17thread_main_innerEv + 0xdf 0x00007ffe57e7c815 _ZN10JavaThread3runEv + 0xf5 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18108 ----------------- 0x00000034aa60b5bc __pthread_cond_wait + 0xcc 0x00007ffe57d05b2f _ZN7Monitor5IWaitEP6Threadl + 0xef 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57dd3998 _ZN13ServiceThread20service_thread_entryEP10JavaThreadP6Thread + 0x198 0x00007ffe57e7c70f _ZN10JavaThread17thread_main_innerEv + 0xdf 0x00007ffe57e7c815 _ZN10JavaThread3runEv + 0xf5 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18109 ----------------- 0x00000034aa60b98e __pthread_cond_timedwait + 0x13e 0x00007ffe57d05dde _ZN7Monitor5IWaitEP6Threadl + 0x39e 0x00007ffe57d062be _ZN7Monitor4waitEblb + 0x22e 0x00007ffe57e78941 _ZNK13WatcherThread5sleepEv + 0x71 0x00007ffe57e78c4e _ZN13WatcherThread3runEv + 0x5e 0x00007ffe57d44668 _ZL10java_startP6Thread + 0x108 ----------------- 18096 ----------------- 0x00000034aa60822d pthread_join + 0x10d
用於輸出指定 java 進程的統計信息api
利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對進程的classloader,compiler,gc狀況;能夠用來監視VM內存內的各類堆和非堆的大小及其內存使用量,以及加載類的數量。tomcat
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
class:統計classloader的行爲 compiler:統計hotspot just-in-time編譯器的行爲 gc:統計gc行爲 gccapacity:統計堆中代的容量、空間 gccause:垃圾收集統計,包括最近引用垃圾收集的事件,基本同gcutil,比gcutil多了兩列 gcnew:統計新生代的行爲 gcnewcapacity:統計新生代的大小和空間 gcold:統計舊生代的行爲 gcoldcapacity:統計舊生代的大小和空間 gcpermcapacity:統計永久代的大小和空間 gcutil:垃圾收集統計 printcompilation:hotspot編譯方法統計 -h n 每n個樣本,顯示header一次 -t n 在第一列顯示時間戳列,時間戳時從jvm啓動開始計算 <vmid> 就是進程號 <interval> interval是監控時間間隔,單位爲微妙,不提供就意味着單次輸出 <count> count是最大輸出次數,不提供且監控時間間隔有值的話, 就無限打印
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -class 4214 2000 10 (每隔2秒監控一次,一共作10次) Loaded Bytes Unloaded Bytes Time 9197 18418. 0 0 0.0 12.49 9197 18418. 0 0 0.0 12.49
列名介紹:bash
Column | Description |
Loaded | 被讀入類的數量 |
Bytes | 被讀入的字節數(K) |
Unloaded | 被卸載類的數量 |
Bytes | 被卸載的字節數(K) |
Time | 花費在load和unload類的時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -compiler 4214 Compiled Failed Invalid Time FailedType FailedMethod 3080 0 0 101.41 0
列名介紹:
Column |
Description |
Compiled | 被執行的編譯任務的數量 |
Failed | 失敗的編譯任務的數量 |
Invalid | 無效的編譯任務的數量 |
Time | 花費在執行編譯任務的時間 |
FailedType | 最近失敗編譯的編譯類弄 |
FailedMethod | 最近失敗編譯的類名和方法名 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gc 4214 2000 10 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 69632.0 69632.0 0.0 3902.9 557056.0 10783.2 1925120.0 1479208.6 245760.0 56451.5 51 9.852 9 11.002 20.854 69632.0 69632.0 0.0 3902.9 557056.0 10783.2 1925120.0 1479208.6 245760.0 56451.5 51 9.852 9 11.002 20.854
列名介紹:
Column | Description |
S0C | 當前S0的容量 (KB) |
S1C | 當前S1的容量 (KB) |
S0U | S0的使用 (KB) |
S1U | S1的使用 (KB) |
EC | 當前eden的容量(KB) |
EU | eden的使用 (KB) |
OC | 當前old的容量(KB) |
OU | old的使用 (KB) |
PC | 當前perm的容量 (KB) |
PU | perm的使用 (KB) |
YGC | young代gc的次數 |
YGCT | young代gc花費的時間 |
FGC | full gc的次數 |
FGCT | full gc的時間 |
GCT | 垃圾收集收集的總時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gccapacity 4214 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC 696320.0 696320.0 696320.0 69632.0 69632.0 557056.0 1925120.0 1925120.0 1925120.0 1925120.0 245760.0 245760.0 245760.0 245760.0 51 9
列名介紹:
Column |
Description |
NGCMN | 年輕代的最小容量 (KB) |
NGCMX |
年輕代的最大容量 (KB) |
NGC |
當前年輕代的容量 (KB) |
S0C |
當前S0的空間 (KB) |
S1C |
當前S1的空間 (KB) |
EC |
當前eden的空間 (KB) |
OGCMN |
年老代的最小容量 (KB) |
OGCMX |
年老代的最大容量 (KB) |
OGC |
當前年老代的容量 (KB) |
OC |
當前年老代的空間 (KB) |
PGCMN |
永久代的最小容量 (KB) |
PGCMX |
永久代的最大容量 (KB) |
PGC |
當前永久代的容量 (KB) |
PC |
當前永久代的空間 (KB) |
YGC |
年輕代gc的次數 |
FGC | full gc的次數 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gccause 4214 S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC 0.00 5.60 16.72 76.84 22.97 51 9.852 9 11.002 20.854 Allocation Failure No GC
列名介紹:
Column |
Description |
LGCC |
最近垃圾回收的緣由 |
GCC | 當前垃圾回收的緣由 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gcnew 4214 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 69632.0 69632.0 0.0 3902.9 6 6 34816.0 557056.0 53634.1 51 9.852
列名介紹:
Column |
Description |
S0C |
當前S0空間 (KB) |
S1C |
當前S1空間 (KB) |
S0U |
S0空間使用 (KB) |
S1U |
S1空間使用 (KB) |
TT |
Tenuring threshold |
MTT |
最大的tenuring threshold |
DSS |
但願的Survivor大小 (KB) |
EC |
當前eden空間 (KB) |
EU |
eden空間使用 (KB) |
YGC |
年輕代gc次數 |
YGCT | 年輕代垃圾收集時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gcnewcapacity 4214 NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 696320.0 696320.0 696320.0 69632.0 69632.0 69632.0 69632.0 557056.0 557056.0 51 9
參數介紹:
Column |
Description |
NGCMN | 最小的年輕代的容量 (KB) |
NGCMX |
最大的年輕代的容量 (KB) |
NGC |
當前年輕代的容量 (KB) |
S0CMX |
最大的S0空間 (KB) |
S0C |
當前S0空間 (KB) |
S1CMX |
最大的S1空間 (KB) |
S1C |
當前S1空間 (KB) |
ECMX |
最大eden空間 (KB) |
EC |
當前eden空間 (KB) |
YGC |
年輕代gc數量 |
FGC | full gc數量 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gcold 4214 PC PU OC OU YGC FGC FGCT GCT 245760.0 56451.8 1925120.0 1479208.6 51 9 11.002 20.854
列名介紹:
Column |
Description |
PC | 當前perm空間 (KB) |
PU | perm空間使用 (KB) |
OC | 當前old空間 (KB) |
OU | old空間使用 (KB) |
YGC | 年輕代gc次數 |
FGC | full gc次數 |
FGCT | full gc時間 |
GCT | 垃圾收集總時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gcoldcapacity 4214 OGCMN OGCMX OGC OC YGC FGC FGCT GCT 1925120.0 1925120.0 1925120.0 1925120.0 51 9 11.002 20.854
列名介紹:
Column |
Description |
OGCMN |
最小年老代容量 (KB) |
OGCMX | 最大年老代容量(KB) |
OGC | 當前年老代容量 (KB) |
OC | 當前年老代空間 (KB) |
YGC | 年輕代gc次數 |
FGC | full gc次數 |
FGCT | full gc時間 |
GCT | 垃圾收集總時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gcpermcapacity 4214 PGCMN PGCMX PGC PC YGC FGC FGCT GCT 245760.0 245760.0 245760.0 245760.0 51 9 11.002 20.854
列名介紹:
Column |
Description |
PGCMN | 永久代最小容量 (KB) |
PGCMX | 永久代最大容量 (KB) |
PGC | 當前永久代的容量 (KB) |
PC | 當前永久代的空間 (KB) |
YGC | 年輕代gc次數 |
FGC | full gc次數 |
FGCT | full gc時間 |
GCT | 垃圾收集總時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -gcutil 4214 2000 10 S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 5.60 0.82 76.84 22.97 51 9.852 9 11.002 20.854 0.00 5.60 0.82 76.84 22.97 51 9.852 9 11.002 20.854
列名介紹:
Column |
Description |
S1 | S1使用百分比 |
E | eden使用百分比 |
O | old使用百分比 |
P | perm使用百分比 |
YGC | 年輕代gc次數 |
YGCT | 年輕代gc時間 |
FGC | full gc次數 |
FGCT | full gc時間 |
GCT | 垃圾收集總時間 |
[root@autorepair-web01-rj autorepair-web01-rj.btr /home/apps/repair-web] # jstat -printcompilation 4214 Compiled Size Type Method 3080 262 1 org/apache/catalina/session/ManagerBase processExpires
列名介紹:
Column |
Description |
Compiled | 被執行的編譯任務的數量 |
Size | 方法字節碼的字節數 |
Type | 編譯類型 |
Method | 編譯方法的類名和方法名。類名使用"/" 代替 "." 做爲空間分隔符. 方法名是給出類的方法名. 格式是一致於HotSpot - XX:+PrintComplation 選項 |
jmap命令能夠得到運行中的jvm的堆的快照,從而能夠離線分析堆,以檢查內存泄漏,檢查一些嚴重影響性能的大對象的建立,檢查系統中什麼對象最多,各類對象所佔內存的大小等等
用來監視進程運行中的jvm物理內存的佔用狀況,該進程內存內,全部對象的狀況,例如產生了哪些對象,對象數量。當系統崩潰時,jmap 能夠從core文件或進程中得到內存的具體匹配狀況,包括Heap size, Perm size等。
jmap [option] <pid> jmap [option] <executable <core> jmap [option] [server_id@]<remote server IP or hostname>
-dump:format=b,file=<filename> pid # dump堆到文件,format指定輸出格式,live指明是活着的對象,file指定文件名 -finalizerinfo # 打印等待回收對象的信息 -heap # 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用狀況,能夠用此來判斷內存目前的使用狀況以及垃圾回收狀況 -histo[:live] # 打印堆的對象統計,包括對象數、內存大小等等 (由於在dump:live前會進行full gc,所以不加live的堆大小要大於加live堆的大小 ) -permstat # 打印classload類裝載器和 jvm heap長久層的信息. 包含包括每一個裝載器的名字,活躍,地址,父裝載器,和其總共加載的類大小。另外,內部String的數量和佔用內存數也會打印出來. -F # 強制,強迫.在pid沒有相應的時候使用-dump或者-histo參數. 在這個模式下,live子參數無效. -J # 傳遞參數給jmap啓動的jvm. ,如:-J-Xms256m
[root@autorepair-web01-rj autorepair-web01-rj.btr /root] # jmap -heap 4214 Attaching to process ID 4214, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.55-b03 using parallel threads in the new generation. using thread-local object allocation. Concurrent Mark-Sweep GC Heap Configuration: # 堆配置狀況 MinHeapFreeRatio = 40 # 最小堆的使用比例 MaxHeapFreeRatio = 70 # 最大堆的可用比例 MaxHeapSize = 2684354560 (2560.0MB) # 最大堆空間大小 NewSize = 713031680 (680.0MB) # 新生代分配大小 MaxNewSize = 713031680 (680.0MB) # 最大可用新生代分配大小 OldSize = 5439488 (5.1875MB) # 老年代大小 NewRatio = 2 # 新生代比例 SurvivorRatio = 8 # 新生代與suvivor的比例 PermSize = 251658240 (240.0MB) # perm區大小 MaxPermSize = 251658240 (240.0MB) # 最大可分配perm區大小 G1HeapRegionSize = 0 (0.0MB) # G1堆區大小 Heap Usage: # 堆使用狀況 New Generation (Eden + 1 Survivor Space): # 新生代(伊甸區 + survior空間) capacity = 641728512 (612.0MB) # 伊甸區容量 used = 507109064 (483.6168899536133MB) # 已經使用大小 free = 134619448 (128.38311004638672MB) # 剩餘容量 79.0223676394793% used # 使用比例 Eden Space: # 伊甸區 capacity = 570425344 (544.0MB) # 伊甸區容量 used = 503156488 (479.84741973876953MB) # 伊甸區使用 free = 67268856 (64.15258026123047MB) # 伊甸區當前剩餘容量 88.2072462755091% used # 伊甸區使用狀況 From Space: # survior1區 capacity = 71303168 (68.0MB) # survior1區容量 used = 3952576 (3.76947021484375MB) # surviror1區已使用狀況 free = 67350592 (64.23052978515625MB) # surviror1區剩餘容量 5.543338551240809% used # survior1區使用比例 To Space: # survior2 區 capacity = 71303168 (68.0MB) # survior2區容量 used = 0 (0.0MB) # survior2區已使用狀況 free = 71303168 (68.0MB) # survior2區剩餘容量 0.0% used # survior2區使用比例 concurrent mark-sweep generation: # 老生代使用狀況 capacity = 1971322880 (1880.0MB) # 老生代容量 used = 1514740296 (1444.5689163208008MB) # 老生代已使用容量 free = 456582584 (435.4310836791992MB) # 老生代剩餘容量 76.83877214472345% used # 老生代使用比例 Perm Generation: # perm區使用狀況 capacity = 251658240 (240.0MB) # perm區容量 used = 57814400 (55.1361083984375MB) # perm區已使用容量 free = 193843840 (184.8638916015625MB) # perm區剩餘容量 22.973378499348957% used # perm區使用比例 28645 interned Strings occupying 3168232 bytes.
附錄一些特殊的小技巧!
jstat -class 17970 1000 10 (每隔1秒監控一次,一共作10次)
Loaded Bytes Unloaded Bytes Time
7837 8534.0 1069 1005.7 27.87
Loaded:Number of classes loaded.
Bytes:Number of Kbytes loaded.
Unloaded:Number of classes unloaded.
Bytes:Number of Kbytes unloaded.
Time:Time spent performing class load and unload operations.
jstat -gc 17970 2000 20 (每隔2秒監控一次,共20次)
S0C:Current survivor space 0 capacity (KB).
S1C:Current survivor space 1 capacity (KB).
S0U:Current survivor space 0 utilization (KB).
S1U:Current survivor space 1 utilization (KB).
EC:Current eden space capacity (KB).
EU:Eden space utilization (KB).
OC:Current old space capacity (KB).
OU:Old space utilization (KB).
PC:Current permanent space capacity (KB).
PU:Permanent space utilization (KB).
YGC:Number of young generation GC Events.
YGCT:Young generation garbage collection time.
FGC:Number of full GC events.
FGCT:Full garbage collection time.
GCT:Total garbage collection time.
jstat -gcutil 17970 1000 10 (按百分比顯式)
jstat -compiler 17970 (顯示VM實時編譯的數量等信息)
jstat -gccapacity 24931 1000 10
能夠顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小,如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存佔用量,PC是但前perm內存佔用量。其餘的能夠根據這個類推, OC是old內純的佔用量。
jstat -gcnew 25917 new對象的信息及其佔用量
jstat -gcold 25917 old對象的信息
jstat -gcoldcapacity 25917 old對象的信息及其佔用量。
jstat -gcpermcapacity 25917 perm對象的信息及其佔用量
jstat -printcompilation -h3 25917 1000 5 當前VM執行的信息。每1000毫秒打印一次,一共打印5次,還能夠加上-h3每三行顯示一下標題。