1. ホーム
  2. java

[解決済み】Javaの'PermSize'とは何ですか?

2022-02-20 16:46:14

質問

のドキュメントを見ていたのですが Java メモリ管理 その中でPermSizeというのが出てきたのですが、これがよくわからないのです。ドキュメントには、"JVM stores its metadata"を保存すると書かれていますが、メタデータが何を意味しているのか、正確に理解することができませんでした。私はググって、どこかでそれは値オブジェクト(ユーザー定義オブジェクト)を格納すると読みました。

どのようなオブジェクトが格納されているのでしょうか?説明付きの例があると助かります。

解決方法は?

パーマネント・ジェネレーションの簡単な定義です。

<ブロッククオート

パーマネント・ジェネレーションは、以下の目的で使用されます。 VM 自体の反射的データを保持する クラスオブジェクトやメソッドなど オブジェクトを作成します。これらの反射型オブジェクトは に直接割り当てることができます。 世代であり、そのサイズは 他の 世代."。 [参照]。

つまり、ここにクラス定義が入るのです(これで、以下のようなメッセージが出ることがあります)。 OutOfMemoryError: PermGen space アプリケーションが大量のクラスをロードする場合、および/または再デプロイする場合)。

注意点 PermSize が追加されます。 -Xmx の値は、ユーザーがJVMオプションで設定したものです。しかし MaxPermSize を成長させることができるので、JVMは PermSize を指定した量にします。VMがロードされた初期状態では MaxPermSize はデフォルト値(32mb)のままです。 -client の場合は64mb。 -server ) が、実際に必要になるまでその量を使用することはありません。一方、もしあなたが両方の PermSize MaxPermSize を256mbに変更すると、全体のヒープが256mb追加で増加したことに気づくでしょう。 -Xmx を設定します。