lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文章目录

 

MAXTENURINGTHRESHOLD参数讲解

在GC回收的时候. 如下图详解 From 区和To区 会来回的复制和交换位置. 每交换一次,就会增加一次年龄. 默认交换了15次, 就会从新生代到老年代中去.

MaxTenuringThreshold设置垃圾的最大年龄. 默认为15 . 最大也是15,在jdk8中. 范围为 0到15.

MAXTENURINGTHRESHOLD代码实战

用于测试的代码如下 ,为了程序在后台能够持续的运行., 因此代码中使用了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 可以看到 设定的值已经生效了 .

posted on 2022-11-07 16:56  白露~  阅读(289)  评论(0编辑  收藏  举报