文章目录
MaxTenuringThreshold参数讲解
- MaxTenuringThreshold参数讲解
- MaxTenuringThreshold代码实战
在GC回收的时候. 如下图详解 From 区和To区 会来回的复制和交换位置. 每交换一次,就会增加一次年龄. 默认交换了15次, 就会从新生代到老年代中去. MaxTenuringThreshold设置垃圾的最大年龄. 默认为15 . 最大也是15,在jdk8中. 范围为 0到15.
用于测试的代码如下 ,为了程序在后台能够持续的运行., 因此代码中使用了Thread.sleep(Integer.MAX_VALUE);
, 首先不设置任何的jvm参数,运行
public class MyHelloGc {
public static void main(String[] args) throws InterruptedException {
System.out.println("***************HELLO GC");
Thread.sleep(Integer.MAX_VALUE);
}
}
程序运行后, 在terminal使用jps -l, 查看后台正在运行的java进程号 . 如下图所示, 可以看到当前程序的进程号为 19156 使用jinfo -flag MaxTenuringThreshold 19156 查看 参数的值. 如下所示.MaxTenuringThreshold的值默认为 15.
E:\java_dayly\myjvmdemo>jinfo -flag MaxTenuringThreshold 19156
-XX:MaxTenuringThreshold=15
当把jvm的参数, 设置成20时 项目启动后, 提示报错如下 . 提示 设定的20无效. 只能是在0到 15之间.
当把值设定为9 ,再次启动项目时 .
-XX:MaxTenuringThreshold=9
通过jps 和 jinfo 可以看到 设定的值已经生效了 .