正如我读到的那样:
TLA是:线程局部区域(TLA)是用于对象分配的空闲内存块。 TLA是从堆中保留的,并根据需要提供给Java线程,这样Java线程就可以分配对象,而不必为每个对象分配与其他Java线程同步。
我认为线程堆栈区域用于此目的(并且还保持卡住的调用)。
究竟有什么区别?
答案 0 :(得分:5)
正如定义所说,线程局部区域是堆的一部分,每个线程可以分配对象。所有线程都访问同一个堆:线程1可以访问线程2创建的对象,反之亦然; TLA 仅为对象分配分隔堆:每个线程只能分配该区域中的对象,但可以访问堆中的任何对象。
线程堆栈是堆栈的一部分;每个线程都有自己的堆栈,线程堆栈大小提到堆栈的大小。线程无法访问其他线程的堆栈。
答案 1 :(得分:0)
TLA是堆的一部分。堆栈不在堆上。
如果您不理解堆栈和堆之间的区别,请参阅this other question。