jinfo命令

来源:互联网 发布:知乎 北京 中科院 编辑:程序博客网 时间:2024/05/22 21:04

jinfo 是jdk自带的一个工具,它可以用来查看正在运行的java应用程序的扩展参数(JVM中-X标示的参数);甚至支持在运行时修改部分参数。

1、通过以下的命令你便能看到JVM中哪些flag可以被jinfo动态修改:

# java -XX:+PrintFlagsFinal -version|grep manageable     intx CMSAbortablePrecleanWaitMillis            = 100             {manageable}             intx CMSWaitDuration                           = 2000            {manageable}             bool HeapDumpAfterFullGC                       = false           {manageable}             bool HeapDumpBeforeFullGC                      = false           {manageable}             bool HeapDumpOnOutOfMemoryError                = false           {manageable}            ccstr HeapDumpPath                              =                 {manageable}            uintx MaxHeapFreeRatio                          = 100             {manageable}            uintx MinHeapFreeRatio                          = 0               {manageable}             bool PrintClassHistogram                       = false           {manageable}             bool PrintClassHistogramAfterFullGC            = false           {manageable}             bool PrintClassHistogramBeforeFullGC           = false           {manageable}             bool PrintConcurrentLocks                      = false           {manageable}             bool PrintGC                                   = false           {manageable}             bool PrintGCDateStamps                         = false           {manageable}             bool PrintGCDetails                            = false           {manageable}             bool PrintGCTimeStamps                         = false           {manageable}        java version "1.7.0_79"Java(TM) SE Runtime Environment (build 1.7.0_79-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

通过选项-XX:+PrintFlagsFinal可以列出所有的JVM flag,而其中的标注为manageable 的flag则是值得我们关注的部分。这些flag可通过JDK management interface(-XX:+PrintFlagsFinal)动态修改。


【实例】

1、查看参数值:
# ps -ef | grep 8807
root      8807     1  2 14:54 ?        00:03:11 /data/apps/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Xms20480m -Xmx20480m -Xss2m -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -XX:NewRatio=2 -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -verbose:gc -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Xloggc:/data/logs/tomcat/gc.log -Dcom.sun.management.jmxremote.port=1999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start


# jinfo -flag GCLogFileSize 8807
-XX:GCLogFileSize=10485760


2、打开gc:

在jinfo中需要打开-XX:+PrintGC和 -XX:+PrintGCDetails两个选项才能开启GC日志,这与用命令行参数的方式实现有着细微的差别——如果你通过启动脚本(startup script)来设置参数,仅需-XX:+PrintGCDetails即可,因为-XX:+PrintGC会被自动打开。

# jinfo -flag+PrintGCDetails 12278

# jinfo -flag+PrintGC 12278



3、关闭gc:
若想关闭GC日志功能,只需要执行jinfo -flag -PrintGCDetails 12278和 jinfo -flag -PrintGC 12278命令即可。


参考:https://www.bbsmax.com/A/ZOJPZgKodv/
原创粉丝点击