ホームページ > Java > &#&チュートリアル > Java の静的メソッドと変数はメモリ内のどこに保存されますか?

Java の静的メソッドと変数はメモリ内のどこに保存されますか?

Mary-Kate Olsen
リリース: 2024-12-03 16:39:11
オリジナル
1006 人が閲覧しました

Where are Java's Static Methods and Variables Stored in Memory?

静的メソッドと変数は Java のどこに保存されますか?

静的メソッドと変数は、オブジェクト指向プログラミングのすべてのインスタンスにわたって共有 ID を提供することで重要な役割を果たします。クラス。インスタンス変数とは異なり、静的変数は、作成されたオブジェクトの数に関係なく、クラスごとに 1 つだけ存在します。同様に、静的メソッドは、クラスのインスタンスを作成する必要がなく、クラス自体から直接アクセスできるクラスレベルのメソッドです。

メモリ割り当て

では、静的メソッドはどこにあるのでしょうか。変数は Java に保存されますか?答えは、永続世代 (PermGen) または MetaSpace の概念にあります。 Java の古いバージョン (Java 8 より前) では、PermGen は、静的変数やメソッド コードを含むクラス関連のメタデータの保存専用のヒープ メモリの一部でした。ただし、Java 8 以降、PermGen は同じ目的を果たす Metaspace に置き換えられました。

静的変数

静的変数は単に PermGen または MetaSpace セクションに格納されます。ヒープの。各静的変数は、その値が保存される特定のメモリ アドレスを占有します。

静的メソッド

静的メソッドは、クラス データの一部として PermGen または MetaSpace 領域に保存されます。 。メソッド コードと関連するメタデータ (引数の型や戻り値の型など) はバイトコードにコンパイルされ、この専用メモリ領域に配置されます。

次の Java コードを考えてみましょう:

class A {
    static int i = 0;
    static int j;

    static void method() {
        // static k = 0; // This won't compile
    }
}
ログイン後にコピー

この例では、静的変数 i と j はヒープの PermGen または MetaSpace 領域に格納されます。静的メソッドの method() も、クラス メタデータの一部として同じメモリ領域に保存されます。

ガベージ コレクションへの影響

静的変数と静的メソッドは、個々のライフサイクルに関係なく永続的に存在します。クラスのオブジェクト。クラス自体がメモリからアンロードされない限り、それらはガベージ コレクションの対象にはなりません。これは、クラスがアクティブなオブジェクトによって使用されなくなった場合でも、潜在的にメモリ内に無限に残る可能性があることを意味します。

以上がJava の静的メソッドと変数はメモリ内のどこに保存されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート