TLAB作用原理:Java在内存新生代Eden区域开辟了一小块线程私有区域,这块区域为TLAB,默认占Eden区域大小的1% , 作用于小对象,因为小对象用完即丢,不存在线程共享,快速消亡GC,JVM优先将小对象分配在TLAB是线程私有的,所以没有锁的开销 , 效率高,每次只需要线程在自己的缓冲区分配即可,不需要进行锁同步堆。
对象除了基本类型的不一定是在堆内存分配 , 在JVM拥有逃逸分析,能够分析出一个新的对象所拥有的范围,从而决定是否要将这个对象分配到堆上,是JVM的默认行为;Java 逃逸分析是一种优化技术,可以通过分析 Java 对象的作用域和生命周期,确定对象的内存分配位置和生命周期 , 从而减少不必要的内存分配和垃圾回收 。可以在栈上分配,可以在栈帧上创建和销毁,分离对象或标量替换,同步消除 。
public class TaoYiFenxi {Object obj;public void setObj() {obj = new Object();}public Object getObject() {Object obj1 = new Object();return obj1;}public void test1() {synchronized (new Object()) {}} }2.2.6 JVM垃圾收集器特点与原理
(1)Serial垃圾收集器、Serial Old垃圾收集器

文章插图
Serial收集器采用复制算法 , 作用在年轻代的一款垃圾收集器,串行运行,执行过程中会STW , 是使用单个线程进行垃圾回收 , 响应速度优先 。
Serial Old 收集器采用标记整理算法,作用在老年代的一款收集器,串行运行,执行过程中会暂停所有用户线程,会STW,使用单个线程进行垃圾回收,响应速度优先 。
使用场景:
适合内存小几十兆以内,比较适合简单的服务或者单CPU服务,避免了线程交互的开销 。
优点:
小堆内存且单核CPU执行效率高 。
缺点:
堆内存大,多核CPU不适合,回收时长非常长 。
(2)Parallel Scavenge垃圾收集器、Parallel Old垃圾收集器

文章插图
Parallel Scavenge垃圾收集器采用了复制算法 , 作用在年轻代的一款垃圾收集器,是并行的多线程运行,执行过程中会发生STW,关注与程序吞吐量 。
Parallel Old垃圾收集器采用标记整理算法,作用,作用在老年代的一款垃圾收集器,是并行的多线程运行 , 执行过程中会发生STW , 关注与程序吞吐量 。
Parallel Scavenge + Parallel Old组合是Java8当中默认使用的一个组合垃圾回收 。
所谓的吞吐量是CPU用于运行用户代码时间与CPU总消耗时间的比值,也就是说吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 垃圾收集器时间),录入程序运行了100分钟 , 垃圾收集器花费时间1分钟 , 则吞吐量达到了99% 。
使用场景:
适用于内存在几个G之间 , 适用于后台计算服务或者不需要太多交互的服务,保证吞吐量的服务 。
优点:
可控吞吐量、保证吞吐量,并行收集 。
缺点:
回收期间STW,随着堆内存增大 , 回收暂停时间增大 。
(3)Par New垃圾收集器
Par New垃圾收集器采用了复制算法 , 作用在年轻代的一款垃圾收集器 , 也是并行多线程运行 , 跟Parallel非常相似 , 是它的增强版本,或者说是Serial收集器的多线程版本,是搭配CMS垃圾收集器特制的一个收集器 。
使用场景:
搭配CMS使用
(4)CMS垃圾收集器
CMS是一款多线程+分段操作的一款垃圾收集器 。其最大的优点就是将一次完整的回收过程拆分成多个步骤,并且在执行的某些过程中可以使用户线程可以继续运行 , 分别有初始标记,并发标记,重新标记,并发清理和并发重置 。

文章插图
CMS是一款多线程+分段操作的一款垃圾收集器 。其最大的优点就是将一次完整的回收过程拆分成多个步骤,并且在执行的某些过程中可以使用户线程可以继续运行,分别有初始标记,并发标记,重新标记,并发清理和并发重置 。
CMS分段
- 初始标记阶段, 这个阶段会暂停用户线程, 扫描所有的根对象,因为根对象比较少,所以一般stw时间都非常短 。
- 并发标记阶段,这个阶段与用户线程一起执行,会一直沿着根往下扫描,不停的识别对象是否为垃圾,标记,采用了三色算法,在对象头(Mark World)标识了一个颜色属性,不同的颜色代表不同阶段,扫描过程中给与对象一个颜色,记录扫描位置,防止cpu时间片切换不需要重新扫描 。
推荐阅读
- Containerd容器管理
- 如何编写高性能的Java代码
- 淘宝的评价管理在哪里查看 淘宝的评价管理在哪里
- 微信授权管理在哪里怎么添加应用 微信授权管理在哪里
- 在他人土地上建厕所违反治安管理处罚法吗
- PGO 在Java应用程序中释放峰值性能:配置文件引导优化概述
- 韩国知名女模特,米兰时装周也坚持自我管理,不愧“女版金钟国”
- 酒店客房管理知识点 酒店客房管理知识
- 不良情绪的管理办法包括 不良情绪的管理办法
- 如何管理生成式AI
