問題タブ [metaspace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
62307 参照

java - PermGen と Metaspace の違いは何ですか?

Java 7 までは、JVM がそのクラスを保持するために使用されるPermGenと呼ばれる JVM メモリ内の領域がありました。Java 8では削除され、 Metaspaceと呼ばれる領域に置き換えられました。

PermGen と Metaspaceの最も重要な違いは何ですか?

私が知っている唯一の違いは、java.lang.OutOfMemoryError: PermGen spaceスローできなくなり、VM パラメーターMaxPermSizeが無視されることです。

0 投票する
1 に答える
10623 参照

tomcat - Eden スペースはどこに設定しますか?

問題の概要:

PS Eden Spaceの近くに表示されるメモリ サイズは 639.5 MB ですが 、 JAVA_OPTS-Xms2558m -Xmx2558m には(2.5G)が含まれています。


詳細 :

seten.sh ファイルを作成した後、次の行を追加します。

次に、アプリケーションサーバーのUIを監視して、このメモリの増加が何のためのものかを確認します

ここに画像の説明を入力

私は不思議に思っていました:PS Eden Spaceがすぐにメモリを消費するのに、なぜPS Old Genが安定したままアプリケーションを参照するのか. ただし、 PS Eden Space付近で表示されるメモリ サイズは 639.5 MB です。

PSエデンスペースを増やす方法は?Java8 を使用していることがわかっている場合、どのオプションを使用する必要がありますか?

私が設定したとき-Xms2558m:私のアプリがgrailsアプリケーションであることはあまり知られていませんか(Spring Framework、Spring Securityなどを含む)

0 投票する
2 に答える
17034 参照

memory-leaks - Java 8 メタスペース リークを診断するには?

私はいくつかの興味深い動作をする J2EE アプリケーションを持っています...ヒープは適切に動作しているようで、時間の経過とともにガベージ コレクションで期待どおりに拡大および縮小します。ヒープの全体的な長期的な拡張はそれほど大きくありません。ただし、メタスペースは、MaxMetaspace に到達して OOME に遭遇するまで、1 時間あたり約 20 Mb で着実に成長し続けます。並列ガベージ コレクタと G1 ガベージ コレクタ (jdk1.8.0_40) の両方を試しました。

アプリケーションは実行中に再デプロイされないため、典型的なクラスローダー リークではないようです。このリークの原因を追跡する方法について提案がある人はいますか?

0 投票する
1 に答える
466 参照

java - Java 8 メタスペース - 減少を避ける

Java 8 の Metaspace に関する短い質問があります。 -XX:MetaspaceSize - パラメータで初期サイズを設定できることはわかっています。しかし、この値が最小サイズになるように設定することは可能でしょうか。

私の目標は、メタスペースのサイジングによるフル GC を防ぐことです。通常、私のアプリケーションには 512 MB で十分なメタスペースですが、この値はランタイムによって異なる場合があります。512 MB を超える容量が必要な場合 (これは発生しないはずです)、フル GC を回避できないことは明らかです。

よろしく、マティアス

0 投票する
2 に答える
5257 参照

jvm - Java 8: メタスペースのサイズが増加するのに、ロードされたクラスの数が変わらないのはなぜですか?

Jdk 8 で実行するアプリでは、VisualVM を使用して、ロードされたクラスの使用状況とメタスペースの使用状況を追跡します。

アプリの実行中のある時点で、ロードされたクラスの数はそれ以上増加しませんが、プログラムの実行中にメタスペースのサイズが増加することがわかります。では、クラス以外に何がメタスペースに格納されているのでしょうか?

0 投票する
3 に答える
19034 参照

java - java 8 実行時にメタスペースのサイズを調べる

Java 8 は、動的に拡張できるメタスペースを使用します。メタスペースがいっぱいになると、GC はメタスペースで実行されます。それは、GC がメタスペースで実行されないということですか?

Java 8 アプリケーションが大量のメモリを使用しています。実行時のメタスペースのサイズを知りたいです。それ、どうやったら出来るの?

設定を考えていますMaxMetaspaceSize。何に設定すればよいですか?推奨事項はありますか?

0 投票する
1 に答える
10598 参照

java - Java 8 メタスペース ガベージ コレクション

私が実行している Java プロセスは、最初の 1 時間ほどは一貫して適切に実行されます。ただし、パフォーマンスは急速に低下します。プロファイリングを行ったところ、メタスペースのガベージ コレクションが時間のマークまでかなり頻繁に発生し、その後制御不能になったことがわかりました。

ここに画像の説明を入力

-XX:MaxMetaspaceSize オプションを使用して、これを修正できると確信しています。ただし、この動作が発生する理由について詳しく知りたいです。なぜガベージ コレクション アルゴリズムがこのように動作するのか想像できません。誰かがより良い修正について説明やアドバイスを持っていますか? ありがとう

0 投票する
1 に答える
6049 参照

java - Spring Boot メタスペースのメモリ リーク

Java 1.8.0_51 で Spring Boot 1.2.5 を使用しています。アプリケーションが起動して実行されると、メタスペースは約 1 時間あたり 10MB の割合で増加し続けます。クラスローディングのリークか何かのようですが、何が原因なのかわかりません。

アプリケーションは、Tomcat の代わりに Jetty を使用して実行されています。

Reactor イベント ループが実行されており、スケジュールされたプロセスがいくつかあります。しかし、私がそれらを断ると、これらは起こり続けます。

これらは私が使用しているライブラリの一部です:

0 投票する
0 に答える
493 参照

java - メタスペースは無限に拡大できますが、1 GB に達するとプロセスが停止します

奇妙な問題にぶつかりました。

私は32GBのRAMを搭載したマシンを持っています。スケール テストの目的で、あるアプリケーションの複数のインスタンスを別のクラス ローダーで生成するプログラムを作成しました。私の目標は、1 つのプロセスで同じアプリケーションで 1000 個のインスタンスをホストすることです。私はこの仕事に徐々に取り組みました。最大 800 のインスタンスを問題なくホストできました。

インスタンスを 1000 に増やすと、メモリ不足エラーが発生します。完全なログhs_err.logについては、次のファイルを参照してください。

ご覧のとおり、私のプログラムはメタスペースからの割り当てに失敗しています。これは、メタスペースが約 1 GB のメモリに達すると一貫して発生します。Java のドキュメントによると、メタスペース領域は制限されておらず、私のマシンには 1 GB を超えるメタスペースに対応する十分なメモリがあります。

プロセスがクラッシュすると、次のメッセージが表示されます。

私の質問は次のとおりです。

  • メタスペースのサイズに文書化されていない制限はありますか (たまたま 1 GB です)?
  • プログラムで使用できるクラスローダーの数に制限はありますか?
  • 私のプログラムが添付ファイルからクラッシュする理由を説明する他の手がかりはありますか?

ありがとう