什么情况下TLAB会被归还给共享内存池
时间: 2023-08-22 20:07:22 浏览: 81
matlab开发-更好的内存映射文件位于TLAB中.zip
TLAB(Thread Local Allocation Buffer)是一种线程本地内存分配器,它为每个线程分配一块私有的内存区域,用于线程的对象分配。当线程分配对象时,就从自己的TLAB中分配内存,当TLAB中的内存不够时,会向共享内存池申请一定大小的内存,这个过程被称为TLAB扩容。而当一个线程结束时,线程的TLAB会被释放,并将其中的未使用内存块返还给共享内存池,以便其他线程能够使用。
除了线程结束时,TLAB也会在以下情况下被归还给共享内存池:
1. 线程的TLAB空间不足,无法分配对象,需要向共享内存池申请更多的内存。
2. 线程的TLAB内存使用率过低,超过了一定比例(默认为50%),为了避免内存浪费,需要将未使用的内存返还给共享内存池。
3. 程序执行过程中出现了内存抖动(Memory Thrashing)的情况,即程序反复申请和释放内存,导致频繁进行TLAB扩容和回收,这时可以考虑将TLAB的大小设置得更大一些,或者直接禁用TLAB,让所有线程共享同一个内存池。
需要注意的是,TLAB的大小是可以动态调整的,可以根据程序的实际情况进行调整,以达到更好的性能表现。
阅读全文