JVM系列之内存分配与回收策略

前言

经过前面几篇文章,我们已经对JVM虚拟机有了个初步认识,也了解了各区域应用哪些收集器,以及每个收集器用哪些收集算法,但是在这一系列过程中,其实就是一个对象的由生到死的过程,那么在这过程中对象是怎么处理它的生命周期的呢,今天我们就来介绍下对象在内存中的分配和回收分配给对象的内存,那么,让我们带着愉快的周末心情来开启今天的JVM之旅吧。

 

内存分配

内存分配,通俗讲就是对象在堆上分配:对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数对象也可能直接分配在老年代中,下面我们将具体讲解:

 

TLAB解释:全称为Thread Local Allocation Buffer即线程本地分配缓存,从名称上看是一个线程专用的内存分配区域,是为了加速对象分配而生的。每一个线程都会产生一个TLAB,该线程独享的工作区域,java虚拟机使用这种TLAB区来避免多线程冲突的问题,提高了对象分配的效率。TLAB空间一般不会太大,当大对象无法在TLAB上分配时,则会直接分配到堆上;

 

对象优先在Eden分配:大多数情况下,对象在新手代Eden区中分配,当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC,虚拟机提供-XX:+PrintGCDetails配置收集器日志参数,通知虚拟机在发生垃圾收集时打印内存回收日志,并且在进程退出时输出当前内存各区域分配情况。

 

大对象直接进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Justin的后端书架

codeing不易,赏个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值