私は、アプリケーションレベルでの作業にされているように、プログラムが実行されているとき、私はどのようにJavaの扱いメモリに深いダイビングを持っていません。私は最近、私は、アプリケーションのパフォーマンスの問題のために知っておく必要その内の1つのインスタンスを持っていました。
私は、メモリの「スタック」、「ヒープ」領域を認識していたと私は、これはJavaプログラムのモデルであると思いました。しかし、それははるかに、それを超えていることが判明しました。
その上エデン、S0、S1、旧メモリと:たとえば、私のような用語に出くわしました。私はなかったこれらの用語を知って決して前に。
JavaがあるAS /変更されているので、これらの用語は/あるのJava 8のように関連していないかもしれません。
我々は彼らを知っている必要があり状況誰ガイドは、その情報と何の下を取得することができますか?これらは、メインメモリの一部であるRAM。
Javaの、で定義されているJava言語仕様とJava仮想マシン仕様について協議スタックおよびヒープ(だけでなく、メソッド領域)。
これらは、Java仮想マシンを作るもの、概念的には、記述するために必要とされているものです。
あなたはJVMを実装したい場合は、何らかの方法でそれらを実装する必要があると思います。彼らが戻ってJavaの1ナッシングであったように彼らは基本的にどのようにこれらの作業については変更されているJavaの13で有効なものとしてだけです。
あなたが言及した他の用語(ならびに、「旧世代」、「新世代」は、...)の実装で使用されるメモリ領域です特定のガベージコレクションのメカニズム、OracleのJDK / OpenJDKの中に実装され、特にそれらの。
それらの領域のすべては基本的に、ヒープの特定の部分。ヒープは、それらの領域に分割され、正確な方法が決定すると、あなたのガベージコレクタを微調整する場合を除き、それらについて知ることが必要ではないはずガベージコレクタまでです。
ガベージコレクタは、(これはJVMをスピードアップするための主な方法の一つであるとして)定期的に実装されているリリースや新しいガベージコレクタのアプローチの間で変化するので、ここで使用される具体的な条件は、長年にわたって変更されます。