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 に答える