2016-10-01 12 views
4

オブジェクトが作成され、コンストラクタが呼び出されるときコンストラクタの呼び出しはどこに格納されますか?それはスタックまたはヒープ上にありますか?コンストラクタの呼び出しはどこに格納されますか?スタックまたはヒープ?

+0

便利なお読みください:https://stackoverflow.com/questions/2826222/jvm-heap-and-stack/7597480#7597480 – Dez

+0

コンストラクタを呼び出すことは、「」という特別なメソッドを呼び出すのと同じです。他の方法。 –

答えて

1

ヒープはオブジェクトを格納するためのものです。ヒープ上でコンストラクタを起動させる方法はありません。

これはスタック上で実行されます。

スタックはメソッド呼び出しで使用されます。メソッドスタックの作成に使用されます。コンストラクタはメソッドではありません。しかし、どのような方法でも、いつでも実行されるように、任意のロジックや割り当てを書くことができます。したがって、他の方法と同様にスタックに実装されます。

4

コンストラクタ呼び出しのパラメータとローカル変数は、コンストラクタが戻るまでスタックに格納されます。

コンストラクタが作成するオブジェクトは、ヒープに格納されます。


1 - ...あなたが持っていない限り有効「分析をエスケープ」、およびJITコンパイラは、オブジェクトが安全にスタックに割り当てることができると判断することができます。

1
スタックとヒープのJVMで

ランタイムデータ領域は、以下の通りである

1)ヒープ:オブジェクトの格納領域(JVMインスタンスごとに1つ)

2)Javaスタック:ストレージは、ローカルのためのものです変数、中間結果の結果(スレッドごとに1つ)

関連する問題