jinfo_动态调整JVM参数(无需重启)(实践)
JVM 实践 参数 动态 调整 重启 无需
2023-09-11 14:21:35 时间
本文演示在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输出
![](https://images2015.cnblogs.com/blog/35158/201611/35158-20161129101502443-1893205594.png)
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
相关文章
- JVM 发生OOM的四种情况
- jvm内存溢出分析实践案例:javax.crypto.JceSecurity大量BouncyCastleProvider实例无法被回收
- JVM参数的含义
- JVM 调优实战--一个案例理解常用工具(命令)
- jvm:eclipse.ini最佳优化实践
- 【JVM与内存调优】JVM的平台无关性与语言无关性介绍
- Spring Boot 应用监控: Java获取 CPU,内存, JVM 内部运行状况代码
- JVM 核心知识点
- 一文详解jvm之-Xms -Xmx -Xmn -Xss -XX:PermSize -XX:MaxPermSize等参数的设置和优化以及如何选择垃圾回收器
- 详解jvm之java类加载机制和类加载器(ClassLoader) 深入理解Java类加载器(ClassLoader) 如何自定义类加载器 深入说明双亲委派 双亲委派模型的破坏者-线程上下文类加载器
- 002-JVM运行时数据区【内存模型、jvm参数配置】
- Linux与JVM的内存关系分析
- 从C和C++内存管理来谈谈JVM的垃圾回收算法设计-上
- 【jvm优化超详细】常见的JVM调优场景