jinfo_动态调整JVM参数(无需重启)(实践)
本文演示在JVM进程运行过程中动态开启/关闭 GC输出,无需重启JVM进程
jinfo使用介绍
可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
-flag <name> pid:打印指定JVM的参数值
-flag [+|-]<name> pid:设置指定JVM参数的布尔值
-flag <name>=<value> pid:设置指定JVM参数的值
有一点必须注意:PrintGC必须开启,只开启PrintGCDetails、PrintGCTimeStamps不会输出GC,必须PrintGC同时开启
1、JVM启动时设置以下参数:-Xmx20m -Xms20m -Xmn2m,代码如下(改代码会发生GC)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private static void s2() { String name = ManagementFactory.getRuntimeMXBean().getName(); // get pid String pid = name.split( "@" )[ 0 ]; System.out.println( "Pid is:" + pid); while ( true ) { byte [] b = null ; for ( int i = 0 ; i < 10 ; i++) b = new byte [ 1 * 1024 * 1024 ]; try { Thread.sleep( 5000 ); } catch (InterruptedException e) { e.printStackTrace(); } } } |
2、使用jinfo查看JVM GC的相关参数值
3、启动GC输出

4、控制台GC输出
170.658: [GC [PSYoungGen: 0K->0K(1536K)] 18091K->18091K(19968K), 0.0006562 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
170.658: [GC [PSYoungGen: 0K->0K(1536K)] 18091K->18091K(19968K), 0.0003981 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
170.659: [Full GC [PSYoungGen: 0K->0K(1536K)] [ParOldGen: 18091K->2048K(18432K)] 18091K->2048K(19968K) [PSPermGen: 3280K->3280K(21504K)], 0.0060813 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
5、参考资料
http://www.open-open.com/lib/view/open1437018491912.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2014-11-29 WebServices中使用Session
2014-11-29 使用XmlInclude解决WebService调用时无法识别子类的异常
2014-11-29 WebServices中Xml的序列化
2011-11-29 百万数据查询优化技巧三十则
2011-11-29 ORA-12505, TNS:listener does not currently know of SID given in connect desc .
2011-11-29 Oracle配置