2016-06-21 3 views
-2

実際に私は最近のインタビューでこの質問を受けました。私はスタックに答えました。私はスレッドがメソッドを実行すると思っていましたが、スレッドがスタックに作成される理由を説明してください。ヒープで。予めスレッドオブジェクトは、スタックまたはヒープメモリ内で作成されますか?

+4

次のリンクは疑問を明確にするかもしれません:http://stackoverflow.com/questions/19433523/where-is-thread-object-created-stack-or-heap –

+1

すべてのオブジェクトは、 'Thread'オブジェクト。 – Kayaman

+1

スレッドオブジェクトは常にヒープ上に作成されます(開始されていない場合を除き) ほとんどのオブジェクトはヒープ上に作成されますが、エスケープ解析によってオブジェクトが決定される場合がありますメソッドをエスケープしないと、オブジェクトをスタックに置くことができます。スレッドの場合、実際に開始されない限り、これは不可能です。 –

答えて

0

おかげとの間の主な違いヒープメモリとスタックメモリは、そのスタックメモリは、ローカル変数を格納するために使用され、ヒープメモリは、Javaでオブジェクトを格納するために使用される関数呼び出しです。コード内でオブジェクトがどこに作成されているかにかかわらず。

スレッドオブジェクトはヒープに格納されています。

また、各スレッドには独自のローカル変数と関数呼び出しを保持する独自のスタックがあります。

関連する問題