5

正如我读到的:

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

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

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

究竟有什么区别?

4

2 回答 2

7

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

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

于 2012-10-17T06:58:28.697 回答
2

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

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

于 2012-10-17T06:54:29.043 回答