文前说明
作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。
本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。
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}
网友评论