JVM内存分配机制

  • 对象的创建:类加载检查(没加载则加载)——分配内存——初始化——设置对象头——执行init方法
  • 分配内存(指针碰撞【内存规整】:分界指针挪动对象大小的过程;空闲列表:表中分配一个可容纳对象的内存并更新)
  • CAS多线程抢一个内存,未抢到的继续重试;TLAB本地线程分配缓冲,给线程提前分配内存,分区进行
  • 减少临时对象给堆的GC造成的压力:通过逃逸分析(分析作用域,是否外部调用的,线程结束即销毁),不会逃逸的分配给栈
  • 标量替换:解决没有足够大的内存存放对象,将对象分解为若干成员变量存放的过程
  • 大对象直接进入老年代,具体多大可通过jvm参数设置
  • 对象动态年龄判断:一批对象总大小>50%Surviver区,Surviver中对象>max(这批对象中最大的一个对象),直接老年代
  • 如果老年代空间不足年轻代直接触发minorGC,担保机制(是否大于之前每次回收到老年代的平均大小,判断是否直接fullGC),回收到老年代空间不足触发fullGC,还是不足OOM
  •  判断对象能否被GC:引用计数法(两个对象的成员变量相互引用);可达性分析算法 
  • java四种引用类型:强(直接new)、弱、软(newSoft(new)【GC不足直接干掉】)、虚
  • finalize()方法:GC前执行finalize()方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值