2019独角兽企业重金招聘Python工程师标准>>>

本文使用jinfo命令工具~

jinfo用于查看运行中的java程序的参数,同时也支持在运行时修改部分参数~ 参数包括Java System属性和JVM命令行参数。

在使用jinfo命令之前,可以先使用jps -help来查看jps命令相关的使用方法,包括有哪些参数等~

[root@dev18 ~]# jinfo -help
Usage:jinfo [option] <pid>(to connect to running process)jinfo [option] <executable <core>(to connect to a core file)jinfo [option] [server_id@]<remote server IP or hostname>(to connect to remote debug server)where <option> is one of:-flag <name>         to print the value of the named VM flag-flag [+|-]<name>    to enable or disable the named VM flag-flag <name>=<value> to set the named VM flag to the given value-flags               to print VM flags-sysprops            to print Java system properties<no option>          to print both of the above-h | -help           to print this help message
[root@dev18 ~]#

jinfo 需要pid,所以需要和jps配合使用,也就是先使用jps获取pid信息,然后使用jinfo来处理~

[root@dev18 ~]# jps -l
1656 org.elasticsearch.bootstrap.Elasticsearch
18011 sun.tools.jps.Jps
12905 org.apache.zookeeper.server.quorum.QuorumPeerMain
4308 /srv/activemq/apache-activemq-5.14.3//bin/activemq.jar
[root@dev18 ~]#

接下来,本文使用Zookeeper的服务为例,其pid为12905

使用jinfo -flags 12905打印JVM flags信息

[root@dev18 ~]# jinfo -flags 12905
Attaching to process ID 12905, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.71-b01-Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
[root@dev18 ~]#

使用jinfo -sysprops 12905打印Java系统属性信息

[root@dev18 ~]# jinfo -sysprops 12905
Attaching to process ID 12905, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.71-b01
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 24.71-b01
sun.boot.library.path = /usr/java/jdk1.7.0_71/jre/lib/amd64
zookeeper.root.logger = INFO,CONSOLE
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
com.sun.management.jmxremote.local.only = false
path.separator = :
java.rmi.server.randomIDs = true
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level = unknown
sun.java.launcher = SUN_STANDARD
user.country = US
user.dir = /srv/zookeepers/zookeeper/bin
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.7.0_71-b14
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = /usr/java/jdk1.7.0_71/jre/lib/endorsed
zookeeper.log.dir = .
java.io.tmpdir = /tmp
line.separator = java.vm.specification.vendor = Oracle Corporation
os.name = Linux
sun.jnu.encoding = UTF-8
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.specification.name = Java Platform API Specification
java.class.version = 51.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 2.6.32-573.el6.x86_64
user.home = /root
user.timezone = Asia/Chungking
java.awt.printerjob = sun.print.PSPrinterJob
file.encoding = UTF-8
java.specification.version = 1.7
user.name = root
java.class.path = /srv/zookeepers/zookeeper/bin/../build/classes:/srv/zookeepers/zookeeper/bin/../build/lib/*.jar:/srv/zookeepers/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/srv/zookeepers/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/srv/zookeepers/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/srv/zookeepers/zookeeper/bin/../lib/log4j-1.2.16.jar:/srv/zookeepers/zookeeper/bin/../lib/jline-0.9.94.jar:/srv/zookeepers/zookeeper/bin/../zookeeper-3.4.9.jar:/srv/zookeepers/zookeeper/bin/../src/java/lib/*.jar:/srv/zookeepers/zookeeper/bin/../conf:.:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/lib/dt.jar:/usr/java/jdk1.7.0_71/lib/tools.jar
com.sun.management.jmxremote =
java.vm.specification.version = 1.7
sun.arch.data.model = 64
sun.java.command = org.apache.zookeeper.server.quorum.QuorumPeerMain /srv/zookeepers/zookeeper/bin/../conf/zoo.cfg
java.home = /usr/java/jdk1.7.0_71/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_71
java.ext.dirs = /usr/java/jdk1.7.0_71/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path = /usr/java/jdk1.7.0_71/jre/lib/resources.jar:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/jre/lib/sunrsasign.jar:/usr/java/jdk1.7.0_71/jre/lib/jsse.jar:/usr/java/jdk1.7.0_71/jre/lib/jce.jar:/usr/java/jdk1.7.0_71/jre/lib/charsets.jar:/usr/java/jdk1.7.0_71/jre/lib/jfr.jar:/usr/java/jdk1.7.0_71/jre/classes
java.vendor = Oracle Corporation
file.separator = /
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.cpu.isalist =
[root@dev18 ~]#

不指定option,同时打印JVM flags和Java系统属性~

如 jinfo 12905

[root@dev18 ~]# jinfo 12905
Attaching to process ID 12905, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.71-b01
Java System Properties:java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 24.71-b01
sun.boot.library.path = /usr/java/jdk1.7.0_71/jre/lib/amd64
zookeeper.root.logger = INFO,CONSOLE
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
com.sun.management.jmxremote.local.only = false
path.separator = :
java.rmi.server.randomIDs = true
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level = unknown
sun.java.launcher = SUN_STANDARD
user.country = US
user.dir = /srv/zookeepers/zookeeper/bin
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.7.0_71-b14
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = /usr/java/jdk1.7.0_71/jre/lib/endorsed
zookeeper.log.dir = .
java.io.tmpdir = /tmp
line.separator = java.vm.specification.vendor = Oracle Corporation
os.name = Linux
sun.jnu.encoding = UTF-8
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.specification.name = Java Platform API Specification
java.class.version = 51.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 2.6.32-573.el6.x86_64
user.home = /root
user.timezone = Asia/Chungking
java.awt.printerjob = sun.print.PSPrinterJob
file.encoding = UTF-8
java.specification.version = 1.7
user.name = root
java.class.path = /srv/zookeepers/zookeeper/bin/../build/classes:/srv/zookeepers/zookeeper/bin/../build/lib/*.jar:/srv/zookeepers/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/srv/zookeepers/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/srv/zookeepers/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/srv/zookeepers/zookeeper/bin/../lib/log4j-1.2.16.jar:/srv/zookeepers/zookeeper/bin/../lib/jline-0.9.94.jar:/srv/zookeepers/zookeeper/bin/../zookeeper-3.4.9.jar:/srv/zookeepers/zookeeper/bin/../src/java/lib/*.jar:/srv/zookeepers/zookeeper/bin/../conf:.:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/lib/dt.jar:/usr/java/jdk1.7.0_71/lib/tools.jar
com.sun.management.jmxremote =
java.vm.specification.version = 1.7
sun.arch.data.model = 64
sun.java.command = org.apache.zookeeper.server.quorum.QuorumPeerMain /srv/zookeepers/zookeeper/bin/../conf/zoo.cfg
java.home = /usr/java/jdk1.7.0_71/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_71
java.ext.dirs = /usr/java/jdk1.7.0_71/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path = /usr/java/jdk1.7.0_71/jre/lib/resources.jar:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/jre/lib/sunrsasign.jar:/usr/java/jdk1.7.0_71/jre/lib/jsse.jar:/usr/java/jdk1.7.0_71/jre/lib/jce.jar:/usr/java/jdk1.7.0_71/jre/lib/charsets.jar:/usr/java/jdk1.7.0_71/jre/lib/jfr.jar:/usr/java/jdk1.7.0_71/jre/classes
java.vendor = Oracle Corporation
file.separator = /
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.cpu.isalist = VM Flags:-Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false[root@dev18 ~]# 

查看某个参数的值,jinfo -flag SurvivorRatio  12905

[root@dev18 ~]# jinfo -flag SurvivorRatio  12905
-XX:SurvivorRatio=8
[root@dev18 ~]#

我们通过-XX:+PrintFlagsFinal -version参数可以获取JVM的所有选项,因为这样的信息很多,我们只列出可管理 (manageable) 的参数信息,如:

[root@dev18 ~]#  java -XX:+PrintFlagsFinal -version | grep manageableintx 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_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
[root@dev18 ~]#

从上述信息中可以看到,MaxHeapFreeRatio的值为100,我们尝试去修改一下这个值,将其改成80~

修改MaxHeapFreeRatio的值,使用jinfo -flag MaxHeapFreeRatio=80  12905

然后查一下修改后MaxHeapFreeRatio的值已经为80~

[root@dev18 ~]# jinfo -flag MaxHeapFreeRatio  12905
-XX:MaxHeapFreeRatio=80

重新将MaxHeapFreeRatio设置为默认的100~

[root@dev18 ~]# jinfo -flag MaxHeapFreeRatio=100  12905
[root@dev18 ~]# jinfo -flag MaxHeapFreeRatio  12905
-XX:MaxHeapFreeRatio=100
[root@dev18 ~]# 

本文使用jinfo命令工具给出相关的示例,有兴趣的读者可以动手操作一下~   :)

转载于:https://my.oschina.net/wangmengjun/blog/864438

Java自带的性能监测工具之jinfo相关推荐

  1. Java自带的性能监测工具之jstack

    2019独角兽企业重金招聘Python工程师标准>>> 本文继续介绍Java自带的性能监测工具,本文使用jstack (Java Stack Trace)工具来玩~ 使用jstack ...

  2. java性能检测工具_Java自带的性能监测工具之jmap

    本文继续介绍Java自带的性能监测工具,本文使用jmap工具来玩~ jmap (Java Memory Map) 命令可以生成Java应用程序的堆快照和对象统计信息,对生成的堆快照进行分析,可以分析堆 ...

  3. java gc检测工具_Java自带的性能监测工具之jstat

    本文使用jstat命令工具~ jstat简介 jstat (Java Virtual Machine Statistics Monitoring Tool) 是一个可以用于观察Java应用程序运行时信 ...

  4. Linux 性能监测工具总结

    前言: Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘--)出了问题.在Linux系统中,所有的运行参数保存在虚拟目录/ ...

  5. Linux 性能监测工具

    Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘--)出了问题.在Linux系统中,所有的运行参数保存在虚拟目录/proc ...

  6. Linux性能监测工具Nmon介绍及其使用

    1 NMON介绍 Nmon由 IBM 开发并已开源 (Nmon for linux 版本已经在 2009 年 7 月 27 日开放源码 ) ,是收集 AIX 或 Linux 主机的性能数据并分析的工具 ...

  7. 十三个强大的Linux性能监测工具

    Linux系统下,大多数的性能监测工具保存在/proc目录下.这里我们将Linux AS 和 SUSE LINUX EnterpriseServer中的命令行及图形方式下的性能监测工具做概括性介绍.这 ...

  8. 【Netdata】性能监测工具介绍、安装、使用

    一.工具介绍 Netdata是一款Linux系统实时性能监测工具,以web的可视化方式展示系统及应用程序的实时运行状态.前端响应快,UI很整洁,操作方面,支持图表重置,缩放.具体优点如下:界面酷炫:i ...

  9. android studio 测试工具,Android:Studio性能监测工具

    Android Studio 内置了四种性能监测工具Memory Monitor.Network Monitor.CPU Monitor.GPU Monitor,我们可以使用这些工具监测APP的状态, ...

最新文章

  1. linux下的主要目录
  2. lingo变量无限制版本_【运筹学】用Lingo求解运输问题,兼谈Lingo语法
  3. NO--15 微信小程序,scroll-view选项卡和跳转
  4. java图像处理之查找表实现图像处理加速
  5. 担忧医生因AI技术而失业?杞人忧天
  6. 同态加法_同态—当旧趋势突然变酷时
  7. vs2005 新建项目一片空白
  8. Opencv 中cv开头的函数和没有cv的区别,例如cvWaitkey()和waitKey()的区别
  9. 多变量逻辑回归python_Python实现逻辑回归(Logistic Regression in Python)
  10. HTML5 canvas中使用路径
  11. Spring Security——基于表单登录认证原理及实现
  12. 1414 冰雕(思维+暴力)
  13. python下载完是什么样的图片_[宅男福利]用Python下载页面中所有的图片
  14. VS2010下编译mp4v2及在项目中的使用
  15. vue倒计时翻页插件
  16. w7电脑蓝屏怎么解决_Win7电脑突然蓝屏怎么办?
  17. java中pack什么意思_java – .pack()做什么?
  18. c语言将数据写入文件后乱码_C语言 文件写入输出。文件载入后输出是乱码,纠结啊!...
  19. 计算球第n次落地时经过的距离和反弹的高度
  20. PDF定位关键字/词所在坐标及页码

热门文章

  1. 万门大学倒闭了,童哲连夜跑路了
  2. 我用24小时、8块GPU、400美元在云上完成训练BERT!特拉维夫大学新研究
  3. 英特尔CPU机密数据大量泄露:芯片后门实锤,下一代CPU原理图曝光
  4. 小tips:你不知道的 npm init
  5. Mysql 共享锁(lock in share mode),排他锁(for update)
  6. ECJTUACM16 Winter vacation training #4 题解源码
  7. 【云栖说第三期】发现大家对能模仿马云声音的ET有兴趣,我们找了阿里四位专家来聊聊ET背后的人工智能...
  8. 用户和用户组的简单总结
  9. 2015春季学期阅读计划
  10. BroadcastReceiver 接收系统短信广播