ホームページ >Java >&#&チュートリアル >静的メソッドと変数は Java メモリのどこに保存されますか?
静的メソッドと変数は Java のどこに保存されますか?
インスタンス メソッドや変数とは異なり、Java の静的要素は特定のインスタンスに関連付けられませんクラスの。プログラムのパフォーマンスを最適化するには、メモリの場所を理解することが重要です。
静的メソッドと変数のメモリ ストレージ
静的メソッドと変数は、ヒープ メモリの別の領域に格納されます。 PermGen (Java 8 では MetaSpace) と呼ばれます。この領域は主に、リフレクション データと、静的メンバーを含むロードされたクラスに関する情報を保存するために予約されています。
PermGen / MetaSpace
PermGen (現在は非推奨) と MetaSpace はメモリです。静的変数やメソッド情報などのクラスレベルのデータを保存するスペース。これらは、ヒープ割り当てオブジェクトに使用される通常のヒープの一部ではありません。静的変数はこの空間に割り当てられ、技術的な値 (プリミティブや参照など) を保持します。
非ヒープとヒープ
したがって、静的メソッドと変数オブジェクト インスタンスが存在する従来のヒープ メモリの外側に保存されます。この分離により、ライフサイクルに関係なく、クラスのすべてのインスタンス間で静的要素にアクセスできることが保証されます。
ガベージ コレクションと静的変数
静的変数は自動的にはガベージされません。集めた。クラスのインスタンスが参照されなくなった場合でも、クラス自体がロードされている限り、その静的変数は存続します。静的変数に関連付けられたリソースを手動で解放するには、それらを明示的に null に割り当てるか、finalize() メソッドを使用します (ただし、ガベージ コレクションの前に実行されることは保証されていません)。
以上が静的メソッドと変数は Java メモリのどこに保存されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。