进入老年区条件和TLAB

进入年老区情况:
1.老对象进入老年区(一般是在新生代经历15次GC,也可以使用MaxTenuringThreshold)
2.大对象进入老年区(一次请求的对象,新生区没有这么大的空间,会将对象直接分配到老年区(前提是年老区有这么大的空间,如果没有报内存溢出错误)

TLAB

Thread local allocation buffer:线程本地分配缓存,一个线程专用的内存区域(占用eden区)
目的:避免多线程冲突,提高对象分配效率,TLAB启用时,java虚拟机会为每一个线程分配一个TLAB空间

参数:
-XX:TLABSize 设置TLAB大小
-XX:+UseTLAB 使用TLAB(默认为开启)
-XX:-UseTLAB 关闭TLAB

public class UseTLAB{

    private static void alloc(){
        byte[] b= new byte[2];
        b[0]=1;
    }

    public static void main(String[] args) {
        long s = System.currentTimeMillis();
        for(int i=0;i<100000000;i++)
            alloc();

        long e = System.currentTimeMillis();
        System.out.println(e-s);
    }
}

/**
 *  java -XX:+UseTLAB      结果:9 
 *  java -XX:-UseTLAB      结果:12
 */

对象分配流程:

这里写图片描述

ThreadLocal和TLABJava虚拟机(JVM)中与内存分配和线程相关的两个概念。 ThreadLocal是一个Java类,它提供了线程本地变量的功能。每个线程都可以拥有自己的ThreadLocal变量,该变量在不同的线程中具有不同的值。ThreadLocal的设计目的是为了在多线程环境中提供线程安全的对象,并且避免了使用锁的开销。ThreadLocal可以在多个线程之间独立保存变量,每个线程都可以独立访问和修改自己的ThreadLocal变量,而不会影响其他线程的值。这是通过在每个线程的Thread对象中维护一个ThreadLocalMap来实现的。ThreadLocal在某些情况下可以用于避免共享变量的并发访问问题,但需要谨慎使用,以避免内存泄漏。 TLAB(Thread Local Allocation Buffer)是JVM在分配新对象时使用的一种内存分配缓冲。每个线程都拥有自己的TLAB,用于存储该线程分配的新对象。由于每个线程只能写入自己的TLAB,因此不需要同步操作,可以提高分配新对象的性能。TLAB默认情况下是启用的,可以使用启动参数-XX:-UseTLAB将其禁用。调整TLAB的大小可以通过-XX:ThreadLocalBufferSpace参数来实现。 总结来说,ThreadLocal是Java类库提供的一种机制,用于在多线程环境中实现线程安全的变量。而TLAB是JVM在内存分配过程中使用的一种优化机制,用于提高对象分配的性能。两者虽然都与线程相关,但是在不同的层面上发挥作用,ThreadLocal是应用层面的设计,而TLAB是JVM层面的内存优化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JVM线程本地分配缓冲(Thread Local Allocation Buffer)TLAB详解](https://blog.csdn.net/zgz15515397650/article/details/119383089)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [开坑,深入理解jvm虚拟机系列](https://blog.csdn.net/qq_36779436/article/details/125391952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值