blog

Javaランタイム・データ領域

プログラムカウンタは、メモリ空間の小さな断片であり、バイトコードの行番号インジケータの実行を行うには、現在のスレッドとして見ることができます。 Java仮想マシンのスタックは、スレッドプライベートであ...

Jun 27, 2020 · 3 min. read
シェア

プログラムカウンタ

プログラム・カウンタは、現在のスレッドで実行されているバイト・コードの行番号インジケータと考えることができる、メモリ空間の小さな断片です。

マルチスレッドではスレッドの切り替えが行われるため、スレッドの正しい実行位置に戻ることができるように、各スレッドは独立してスレッドカウンタを所有します。

スレッドがJavaメソッドを実行している場合、カウンタはバイトコードが実行されている命令のアドレスを指します。 スレッドがネイティブメソッドを実行している場合、カウンタは空です。

Java仮想マシンスタック

Java仮想マシンのスタックは、スレッドプライベートであるスレッドメモリモデルのJavaメソッドの実行について説明します:メソッドが実行されると、Java仮想マシンは、ローカルテーブルテーブル、オペランドスタック、ダイナミックリンク、メソッドのエクスポートおよびその他の情報を格納するためのスタックフレームの作成を同期します。

ローカル変数テーブルには、基本データ型、オブジェクト参照、returnAddress型が格納されています。

これらのデータタイプは、ローカル変数テーブルではローカル変数スロットとして表されます。

スレッドによって要求されたスタックの深さが仮想マシンによって許可された深さよりも大きい場合、StackOverflowError例外が発生し、スタックの深さが動的に拡張された場合、十分なメモリを要求できないときにOutOfMemoryError例外がスローされます......。

ローカルメソッドスタック

Javaの仮想スタックと同様に、Javaの仮想マシンスタックは、Javaのメソッドを実行するために、仮想マシンのローカルメソッドスタックは、ローカルメソッドを実行するために、スタックオーバーフローの深さで発生しますStackOverflowError例外は、スタックの深さが動的に拡張された場合、それは十分なメモリを適用することはできませんスローされます。OutOfMemoryError例外が発生します。

Javaヒープ

Java heap when the virtual machine manages the largest piece of memory, is shared by all threads, the sole purpose is to store object instances, almost all object instances exist in the Java heap. Java heap is managed by the rubbish collector area, also called the GC heap, most of the rubbish collector is based on the theory of sub-generation to speak of, the new generation, the old generation, the permanent generation, the new generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation, the old generation.エデン、サリヴァイヴァー......。

メモリ割り当ての観点から、すべてのスレッドがヒープを共有するスレッドプライベートアロケーションバッファに細分化することができます、オブジェクトの割り当ての効率を高めるために使用され、より良い割り当てとメモリの回復。 Javaヒープは、物理的に不連続な空間にすることができますが、大きなオブジェクトの連続的な存在のロジックでは、ほとんどの仮想マシンは、実装が簡単で、ストレージ効率は、可能性があります。連続メモリ空間が必要です。

Javaのヒープは固定とスケーラブルの両方が可能で、オブジェクト・インスタンスが割り当てられておらず、ヒープを拡張できない場合、OutOfMemoryError例外が発生します。

方法論領域

メソッド領域はすべてのスレッドで共有され、静的変数、定数、型情報、オンザフライのコンパイラコードキャッシュなどを格納します。メソッド領域はパーシステンス領域と等価ではなく、HotSpot設計チームは特別なメモリ管理コードを書く手間を省くために、パーシステンスの実装を使用してメソッド領域に拡張しました。メソッド領域と永続性は等価ではありません。 HotSpotの設計チームは、メモリオーバーフローの問題が発生しやすい特別なメモリ管理コードを書く手間を省くために、メソッド領域に拡張する永続性の実装を使用しました。 文字列定数プールと静的変数を削除したJDK7、JDK8は永続性の概念を完全に放棄し、残りの情報を格納するためにローカルメモリ実装のメタ空間を使用しました。.

実行時定数プール

ランタイム定数プールは、主にコンパイル時に生成される様々なリテラルや文字参照を格納するメソッド領域の一部であり、動的な性質を持っているため、OutOfMmoryError例外が発生します。

Read next

アダムのオプティマイザー雑感

最も一般的に使用されているAdamオプティマイザは、収束が速く、パラメータチューニングが容易という利点がありますが、よく言われる一般性の問題と収束の問題にも悩まされています。\nそのため、従来の SGD+momentum オプティマイザは、多くの兄貴分のコードで依然として使用されています。\n2つのオプティマイザの比率について

Jun 27, 2020 · 3 min read