そのため、JVM仕様を読んでいて、次のセクションに遭遇しました。
メソッド領域は論理的にはヒープの一部ですが、単純な実装では、ガベージコレクションも圧縮もしないことを選択できます。
それがわかるかどうかはわかりませんが、JVMのテキストセグメントがガベージコレクションされる可能性があるということですか?どうすればそれを理解できますか?
それがわかるかどうかはわかりませんが、JVMのテキストセグメントがガベージコレクションされる可能性があるということですか?
これは通常、Unix / Linuxの意味での「テキスト」(単語)または「テキストセグメント」を指すものではありません。これは、メソッドのバイトコードやJITでコンパイルされたネイティブコードを含む、動的に割り当てられたメモリ領域を指します。これらのメモリセグメントは、JVMの実装などによってはガベージコレクションされる可能性があると言われていますが、これはJVM仕様の要件ではありません。
Javaバイトコードがネイティブコードにコンパイルされ、実行可能イメージに事前にリンクされているJVM実装では、「テキストセグメント」があり、それらのテキストセグメントはガベージコレクションの対象になりません。(読み取り専用であり、同時に実行されているアプリケーションの他のインスタンスと共有されている可能性があるため、そうすることはできません。)
メソッドが実行されると、ローカル変数はスタック上に存在します。
JVMは、ローカル変数を収集せず、メソッドの次の実行に同じメモリを再利用することを選択する可能性があると考えられます。このような選択は、シングルスレッドのランタイム環境でのみ適切です。