深入理解JVM学习笔记(二十七、JVM 内存分配----大对象直接分配到老年代)

一、验证

首先我们编写如下程序

package com.zjt.test.jvm008;

public class Main {
	public static void main(String[] args) {
		byte [] b4 = new byte[40 * 1024 * 1024];
	}
}

打开GC控制台输出运行程序,可以看到如下运行结果。

 从上图可以看出,在程序中定义的40M的对象直接被分配进了老年代。这也就验证了之前的理论:大对象直接进入老年代

二、大对象阈值设置

那么对于到底多大的对象才属于大对象呢,JVM有一个参数可以让我们设定:-XX:PretenureSizeThreshold。下面我们来尝试一下。

首先编写如下程序:定义一个7M的对象。

package com.zjt.test.jvm008;

public class Main {
	public static void main(String[] args) {
		byte [] b4 = new byte[7 * 1024 * 1024];
	}
}

1、首先我们不设定-XX:PretenureSizeThreshold参数,RunConfig配置如下:

 运行结果如下:

 可以看出,对象被分配进了eden区域。

2、接下来我们设定-XX:PretenureSizeThreshold参数为6M,RunConfig配置如下:

运行结果如下:

 从上图可以看出,7M的对象被分配进了老年代中。

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值