参考文献
この記事は以下の情報を参考にして執筆しました。
- 基礎からのサーブレット/JSP 新版
サーブレットの動き
サーブレットの起動時には、アプリケーションサーバがサーブレットのクラスファイルを読み込み、サーブレットのインスタンスをメモリ上に作成して、サーブレットを実行する。
一度サーブレットを起動したら、起動済みのサーブレットを再利用する。
ポイント
・各ユーザに対してインスタンスを生成するのではなく、1つのインスタンスを再利用する。
・各ユーザのリクエストを、マルチスレッドを使って並行処理する。
つまり
変数などの資源を、複数のスレッドが同時に操作する可能性がある。
以下、変数毎のメモリ管理イメージ
変数 | ヒープ領域 | スレッド間で共有 |
---|---|---|
クラス変数 | インスタンス | ◯ される |
インスタンス変数 | インスタンス | ◯ される |
ローカル変数 | JAVAスタック(スレッド固有領域) | × されない |
★覚えておくこと
インスタンス変数やクラス変数を操作する場合には、同時操作の問題を考慮する必要がある。