美文网首页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