jvm学习笔记二(java内存分配策略和回收策略)

1,内存分配的位置

新的对象主要分配在java堆新生代上,极少数分配到老年代。

分配在eden区的内存进行回收的时候发生minor gc(只回收新生代,速度快)


大对象对java虚拟机来说是一个坏消息,容易导致gc提前触发。

因此程序中要避免大量朝生夕死的大对象,

jvm提供一个参数-XX:PretenureSizeThreshold,设置超过这个阈值的对象直接在老年代分配


2.长期存活的对象将进入老年代

jvm给对象提供一个age属性,在Eden区域分配了对象之后,在发生gc时候没有回收该对象,则移动到from survivor区域,设置age = 1,以后每发生一次gc,该对象仍然存活则age++,当年龄增加到一定程度后(默认为15),该对象进入老年代。

对于晋升老年代的阈值,可以通过参数-XX:MaxTenuringThredShold设置


jvm动态年龄判断

jvm并不是要求对象年龄一定到达设置的阈值才会进入老年代,当from survivor空间中同一代相同年龄的对象占到from 空间一半的时候,直接进入老年代。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值