JVM系列:jinfo命令详解
2018-06-22 10:59
585 查看
jinfo全称Java Configuration Info,主要作用是实时查看和调整JVM配置参数。
一.查看JVM参数
用法:jinfo -flag <name> PID示例:
# jinfo -flag MaxMetaspaceSize 11180
# -XX:MaxMetaspaceSize=536870912
表示 MaxMetaspaceSize的大小为512M
注意:如果没有配置,就会显示一个超大的数字:
# -XX:MaxMetaspaceSize=18446744073709547520
# jinfo -flag ThreadStackSize 8752
# -XX:ThreadStackSize=256
表示Xss(线程堆栈大小)为256K
注意:如果没有配置,显示数量为0:
# -XX:ThreadStackSize=0
二.调整JVM参数
(1)布尔类型的JVM参数用法:jinfo -flag [+|-]<name> PID
生效或者失效指定名字的参数
(2)数字/字符串类型的JVM参数
用法:jinfo -flag <name>=<value> PID
使用给定的值,设置参数的值
注意:如果出现,
Exception in thread "main" java.io.IOException: Command failed in target VM at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:112) at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:217) at sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:190) at sun.tools.jinfo.JInfo.flag(JInfo.java:123) at sun.tools.jinfo.JInfo.main(JInfo.java:76)
则表示,对这个flag参数不支持。
三.查看支持动态修改的JVM参数
官方文档中这样描述:标记为manageable的参数通过JConsole或者通过HotSpotDiagnosticMXBean这个类的接口查看。(1)通过JConsole查看标记为manageable的Flags
Linux下:java -XX:+PrintFlagsInitial | grep manageable
Windows下:java -XX:+PrintFlagsInitial | findstr manageable
(2)通过HotSpotDiagnosticMXBean
Java官方的API文档中,接口HotSpotDiagnosticMXBean有一个getDiagnosticOptions()的方法,返回所有可动态修改的JVM参数。通过接口HotSpotDiagnosticMXBean的实现类 - HotSpotDiagnostic来调用这个方法。
使用Java代码调用查看:
HotSpotDiagnostic mxBean = new HotSpotDiagnostic(); List<VMOption> diagnosticVMOptions = mxBean.getDiagnosticOptions(); System.out.println("Writeable VM option: "); for (VMOption vmOption:diagnosticVMOptions){ System.out.println(" "+vmOption.getName() + " = " + vmOption.getValue()); }
运行结果:
Writeable VM option: HeapDumpBeforeFullGC = false HeapDumpAfterFullGC = false HeapDumpOnOutOfMemoryError = false HeapDumpPath = CMSAbortablePrecleanWaitMillis = 100 CMSWaitDuration = 2000 CMSTriggerInterval = -1 PrintGC = false PrintGCDetails = false PrintGCDateStamps = false PrintGCTimeStamps = false PrintGCID = false PrintClassHistogramBeforeFullGC = false PrintClassHistogramAfterFullGC = false PrintClassHistogram = false MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 PrintConcurrentLocks = false UnlockCommercialFeatures = false
参考资料:简书-阿飞Javaer jinfo命令详解
相关文章推荐
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- jvm系列五:监测命令(jvisualvm jps jstat jmap jhat jstack jinfo)及dump堆内存快照分析
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
- JVM监控命令详解
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- [Linux][入门系列]CentOS 的基础命令详解-磁盘基础操作
- Jvm(jdk8)源码分析1-java命令启动流程详解
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- Redis常用命令详解--JAVA(系列文章二)
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- linux内存使用系列(一):free命令详解
- 一天一个shell命令 linux文件操作系列-ln命令详解
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
- 深入理解JavaScript系列(34):设计模式之命令模式详解