美文网首页Java 虚拟机程序员
【Java 虚拟机笔记】jinfo 配置信息工具相关整理

【Java 虚拟机笔记】jinfo 配置信息工具相关整理

作者: 58bc06151329 | 来源:发表于2019-02-28 13:24 被阅读42次

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

1. Java 配置信息工具(Configuration Info for Java)

  • 作用是实时地查看和调整虚拟机各项参数。
    • 使用 jps 命令的 -v 参数可以查看虚拟机启动时显示指定的参数列表,但如果想知道未被显示指定的参数的系统默认值,除了查找资料以为,就只能使用 jinfo 的 -flag 选项查询(JDK 1.6 及以上版本,可以使用 java -XX:+PrintFlagsFinal 查看参数默认值) 。
    • 如果给定进程是在 64 位虚拟机上运行,那么需要指定参数 -J-d64
  • 该工具仅限于报告其 具有访问权限 的虚拟机进程。

1.1 命令格式

  • jinfo [ option ] pid
  • jinfo [ option ] executable core
  • jinfo [ option ] [server-id@]remote-hostname-or-IP
    • options 是选项相互排斥。选项(如果使用)应紧跟在命令名之后。
    • pid 是需要打印配置信息的进程的 ID。这个进程必须是一个 Java 进程。为了获得在机器上运行的 Java 进程的列表可以使用 jps 命令。
    • executable 是产生核心堆的 Java 可执行文件。
    • core 是需要打印配置信息的核心文件。
    • remote-hostname-or-IP 是远程调试服务器的主机名或 IP 地址。
      • 不指定的情况下运行 jinfo,将在本地主机上查找虚拟机进程。
    • server-id 如果在同一远程主机上运行多个调试服务器,则为可选的唯一 ID。
选项 说明
无选项 打印虚拟机运行参数和系统属性的名称、值对。
-flag <name> 打印指定虚拟机运行参数的名称和值。
-flag [+|-]name 启用或禁用指定的布尔参数标志。
-flag name=value 将指定的参数标志设置为指定值。
-flags 打印虚拟机运行参数标志对。
-sysprops 打印系统属性的名称、值对。
-h 打印帮助信息。
-help 打印帮助信息。

1.2 无选项

  • 打印虚拟机运行参数和系统属性的名称、值对。
    • 同时包含 -flags 和 -sysprops 的结果。

执行样例

[root@localhost ~]# sudo -u ovirt jinfo 28823
Attaching to process ID 28823, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.161-b00
Java System Properties:

jboss.modules.system.pkgs = org.jboss.byteman
logging.configuration = file:///var/lib/ovirt-engine/jboss_runtime/config/ovirt-engine-logging.properties
java.vendor = Oracle Corporation
jboss.qualified.host.name = localhost.localdomain
sun.java.launcher = SUN_STANDARD
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
javax.xml.stream.XMLInputFactory = __redirected.__XMLInputFactory
sun.nio.ch.bugLevel = 
os.name = Linux
......

1.3 -flag <name>

  • 打印指定虚拟机运行参数的名称和值。

执行样例

[root@localhost ~]# sudo -u ovirt jinfo -flag MaxPermSize 28823
-XX:MaxPermSize=268435456

输出格式

  • [ 运行参数 ]=[ 值 ]

1.4 -flag [+|-]name

  • 启用或禁用指定的布尔参数标志。

执行样例

[root@localhost ~]# sudo -u ovirt jinfo -flag HeapDumpOnOutOfMemoryError 28823
-XX:+HeapDumpOnOutOfMemoryError
[root@localhost ~]# sudo -u ovirt jinfo -flag -HeapDumpOnOutOfMemoryError 28823
[root@localhost ~]# sudo -u ovirt jinfo -flag HeapDumpOnOutOfMemoryError 28823
-XX:-HeapDumpOnOutOfMemoryError

1.5 -flag name=value

  • 将指定的参数标志设置为指定值。

执行样例

[root@localhost ~]# sudo -u ovirt jinfo -flag HeapDumpPath 28823
-XX:HeapDumpPath=/var/log/ovirt-engine/dump
[root@localhost ~]# sudo -u ovirt jinfo -flag HeapDumpPath=/var/log/ovirt-engine/dump_temp 28823
[root@localhost ~]# sudo -u ovirt jinfo -flag HeapDumpPath 28823
-XX:HeapDumpPath=/var/log/ovirt-engine/dump_temp
  • 并不是所有的参数都可以修改,通过 java -XX:+PrintFlagsFinal 命令可以查看可以修改的参数列表。
[root@localhost ~]#  java -XX:+PrintFlagsFinal|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 虚拟机笔记】jinfo 配置信息工具相关整理

    本文链接:https://www.haomeiwen.com/subject/qqacuqtx.html