线程局部区域(TLA)和线程堆栈大小(Xss)之间有什么区别?

msp*_*ant 4 java parameters multithreading gcc

正如我读到的:

http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/tune_app_thruput.html#wp998772

TLA是:线程局部区域(TLA)是用于对象分配的空闲内存块.TLA从堆中保留并根据需要提供给Java线程,以便Java线程可以分配对象,而无需为每个对象分配与其他Java线程同步.

我认为线程堆栈区域用于此目的(并且还保持卡住的调用).

究竟有什么区别?

m3t*_*man 5

正如定义所说,线程局部区域是堆的一部分,每个线程可以在其中分配对象.所有线程都访问同一个堆:线程1可以访问线程2创建的对象,反之亦然; TLA仅为对象分配分离堆:每个线程只能分配该区域中的对象,但可以访问堆中的任何对象.

线程堆栈是堆栈的一部分; 每个线程都有自己的堆栈,线程堆栈大小提到堆栈的大小.线程无法访问其他线程的堆栈.


Lau*_*ves 2

TLA 是堆的一部分。栈不在堆上。

如果您不了解堆栈和堆之间的区别,请参阅另一个问题。