メモリ領域とインスンタンスの話

アプリケーションコード内の変数やクラスのインスタンスのメモリ確保、実行順序等、ざっくりとしか理解していなかったのですが、こちらの記事を見て、かなりクリアになりました.

・ main関数が実行されると、メインスレッドが作成される.
・ インストラクションコード(自分が書いたコード)が1行目からインストラクションポインタが指す行を順次実行していく.
・ スレッド毎にスタックメモリ領域が確保され、その領域に変数が確保される. データはヒープ領域に確保される.
・ ヒープ領域は複数のスレッド間で共有される.
・ スレッドにはメソッドステート単位でスタックされていき、インストラクションポインタに従って実行され、削除される.
メソッドステートでは(ローカル変数の格納領域、インストラクションポインタ、引数、クラス/インスタンス)といった情報が保持されている.

などなど。
まだ完全には理解していませんが、以前よりかなりクリアになってきました.

アプリケーションが複雑になってくると、スレッド間での共有でややこしくなったりするのでこういった知識を抑えておくことは大事かなと思います.