上一块TLAB虽然被归还到共享内存池了,但是他内部的已使用内存块会存放到新的TLAB中?
时间: 2024-03-29 15:35:51 浏览: 52
matlab开发-更好的内存映射文件位于TLAB中.zip
不是的。当一个线程的TLAB空间不足时,需要向共享内存池申请更多的内存空间。申请到内存空间后,JVM会为当前线程分配一个新的TLAB,并将其中的可用内存块标记为已使用,以供后续对象的分配使用。这个过程被称为TLAB扩容。
新分配的TLAB只包含可用内存块,已被使用的内存块不会被迁移到新的TLAB中。当一个线程的TLAB被返还到共享内存池时,其中已被使用的内存块会被标记为可用内存块,以供其他线程使用。这些内存块不会被迁移到其他线程的TLAB中,而是会被分配给其他线程的新对象。
需要注意的是,当一个线程的TLAB被返还到共享内存池时,其中已被使用的内存块可能会被其他线程修改,而不是原来的线程。因此,在将TLAB中的可用内存块返还给共享内存池之前,需要将其清空,以避免数据混乱的问题。
阅读全文