博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM系列:jinfo命令详解
阅读量:6148 次
发布时间:2019-06-21

本文共 2322 字,大约阅读时间需要 7 分钟。

hot3.png

     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官方的中,接口HotSpotDiagnosticMXBean有一个getDiagnosticOptions()的方法,返回所有可动态修改的JVM参数。通过接口HotSpotDiagnosticMXBean的实现类 - HotSpotDiagnostic来调用这个方法。

    使用Java代码调用查看:

HotSpotDiagnostic mxBean = new HotSpotDiagnostic();List
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

 

    参考资料:

转载于:https://my.oschina.net/javamaster/blog/1833908

你可能感兴趣的文章
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>
java的特殊符号
查看>>