問題タブ [permgen]
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.
java - Java:「テニュア」メモリはpermgenと同じですか?
私は、数週間の操作の後、アプリの速度が低下し、正常に動作し、速度が低下し、正常に動作し、低速と正常に動作する間隔がどんどん短くなるという、時折発生する問題に関する情報を収集しようとしています。私の理論では、時間が経つにつれて、私たちはより頻繁にゴミを収集しているということです。その他の重要な情報は、OOMPermGenの問題が発生することがあるということです。
有効なverbose:gcを配置すると、catalina.outにGC出力が表示されます。ただし、次の情報に基づいて、PrintGCDetailsフラグを追加する必要があると思います。
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
後者のフラグを有効にすると、「Tenured」メモリの収集に関する情報が出力されます。問題は、PermGenエラーの原因となるメモリなのか、それとも何か違うのかということです。また、異なる場合、PermGenスペースを表示する情報をログに記録するにはどうすればよいですか?
編集-残念ながら、この環境ではjvm監視ツールを接続できません。
編集-私は前述の構成オプションを追加しました。また、保有期間の配布を印刷するためのオプションも追加しました。
ParNew世代はpermgenスペースですか?
と
失敗は私を悩ませています。
よろしくお願いします
java - インナークラスは軽量ですか?
内部クラスは通常のクラスよりも軽量ですか、それとも最終的にJavaは通常のクラスと同じように内部クラスをコンパイルしますか?
Javaのクラスは、それ自体がそれほど軽量ではなく、permgenメモリの一部を占めることを知っているので、クロージャのような関数を内部クラスとして使用するのが最善かどうか、または標準クラスでもうまくいくかどうかを知りたいですか?
java - java.lang.OutOfMemoryError:PermGenスペース
次のエラーが発生します"http-9000-5"java.lang.OutOfMemoryError:PermGen space
org.apache.catalina.core.ApplicationDispatcherがSEVEREを呼び出します:サーブレットjspのServlet.service()が例外java.lang.OutOfMemoryError:PermGenスペースをスローしました。
axis2を使用したアプリケーション。ヒープサイズを1024mbに増やしましたが、機能しません。問題は何ですか。解決策をお願いします。
java - 期待される永久世代スペースの 2 倍の量を使用する文字列リテラル
これは Sun JDK 1.6u21、x64 です。
単一の大きな文字列 (512k 文字) のみを含む perm gen の使用法を試すためのクラスがあります。
perm gen の使用状況を、パーマネント生成用getUsage().toString()
のMemoryPoolMXBean
オブジェクト (u21 では「PS Perm Gen」と呼ばれますが、バージョンやガベージ コレクターによって若干異なりますが) を使用して確認します。
クラスを最初に参照すると、たとえば を読んBig0.class
で、 perm gen が最大 500 KB ジャンプします。これは、文字列の定数プール エンコーディングが UTF-8 であり、ASCII 文字のみを使用しているためです。
ただし、実際にこのクラスのインスタンスを作成すると、perm gen が約 2 MB ジャンプします。これはメモリ内の 1 MB の文字列 (UTF16 文字ごとに 2 バイト、確かにサロゲートなし) であるため、メモリ使用量が 2 倍になる理由について混乱しています。
文字列を静的にすると、同じ効果が発生します。final を使用した場合、65535 バイトの定数プール項目の制限を超えるため、コンパイルに失敗します (なぜ final をオフのままにしておくとそれが回避されるのかわかりません - それはおまけの質問と考えてください)。
どんな洞察も大歓迎です!
編集:これは、非静的、最終非静的、および静的文字列で発生しますが、最終静的文字列では発生しないことも指摘する必要があります。これはすでに文字列定数のベスト プラクティスであるため、おそらくこれは主に学術的な関心事です。
java - java.lang.OutOfMemoryError: Web アプリ使用時の PermGen スペース
最近発生している outOfMemory PermGen の問題に苦しんでいます。エラーが発生したときに保存されたログ スニペットの 1 つ:
最大パーマ サイズを増やしまし-XX:MaxPermGen=128m
たが、ここで何らかのメモリ リークが発生していると確信しているため、これは一時的な解決策にすぎません。アプリケーションの Web パーツは、jetty (jsf + icefaces) にデプロイされます。ランダムなコンポーネントをクリックすると、使用されるメモリが増加しますjstat -gcold
. -XX:+TraceClassLoading
jvm params に追加したところ、Web ユーザー インターフェイスでアクションが発生すると、多くのログが記録されますsun.reflect.GeneratedConstructorAccessor
。sun.reflect.GeneratedMethodAccessor
permgen の 99% が使用されたときに、ヒープ ダンプも作成しました。YourKit プロファイラーを使用してヒープを分析しました。クラスローダータブにはsun.reflect.DelegatingClassLoader
、それぞれに1つのクラスを持つ行がたくさんあります。メモリが常に増加している原因は何ですか? どんな助けでも本当に感謝します。
前もって感謝します、ルカシュ
clojure - Clojureはperm-genスペースを使いすぎませんか?
Cojureは初めてですが、AOTコンパイルを使用すると、関数ごとにクラスが生成されることを読みました。それは、perm-genスペースを消費するクラスがたくさんあることを意味しませんか?何か問題はありませんか?AOTコンパイルが使用されていないが、バイトコードがオンザフライで生成されている場合はどうでしょうか。
java - JVMでMaxPermSizeを表示するにはどうすればよいですか?
TomCatにWebアプリをデプロイするときに、恐ろしいPermGen : Outofmemoryエラーが発生します。私は多くの可能な解決策を試しましたが、うまくいきません(時々うまくいく、通常はうまくいきません)。「BuildConfig.groovy」の設定が有効になるかどうか疑問に思います。
JVMによって実際に適用されたMaxPermSizeを表示する方法を知っている人はいますか?
java - サーブレットでの JNDI ルックアップによって permgen メモリ リークが発生する可能性はありますか?
JBoss 4.2 は @EJB インジェクションをサポートしていないため、サーブレットが必要とする EJB を参照するために JNDI ルックアップを使用しています。
このタイプのルックアップが原因で、JVM の Permgen 非ヒープ メモリが増大するのではないかと懸念しています。
私が理解しているように、JNDI は動的なクラスローディングの一種であるため、クラスローダー リークが発生している可能性があります。
私の質問は、以下のサーブレット コードが、時間の経過とともに Permgen メモリ リークを引き起こしている可能性があるということです。
また、ルックアップ後に InitialContext で明示的に close() メソッドを呼び出す必要がありますか? ここで (サーブレットで) インスタンス化される方法が原因で、GC が InitialContexts を期待どおりにクリーンアップしない可能性はありますか?
ありがとうございました。
}
java - Glassfish/HibernateでのPermGenスペースの問題
Glassfish3.1でGWT+Hibernateアプリを実行しています。数時間後、Permgenのスペースが不足しました。これは、Webアプリのリロードなしです。で実行してい–XX:MaxPermSize=256m –XmX1024m
ます。
このページからアドバイスを受けたところ、大量のクラスがリークしていることがわかりました。すべてのHibernateモデルとすべてのGWTRequestFactoryプロキシです。
上記のガイドには、「チェーンを検査し、誤った参照を見つけて、コードを修正する」と書かれています。言うのは簡単です。
クラスローダーは常にのインスタンスを指しますorg.glassfish.web.loader.WebappClassLoader
。$Proxy135
さらに掘り下げてみると、似たような名前のオブジェクトからの参照がたくさん見つかります。しかし、私は他にどのようにフォローするかわかりません。
java - PermGen のメモリ不足の理由
私の環境では、PermGen で OOM を常に検出しています。
- ジャワ6
- jboss-4.2.3
- 大規模な Web アプリケーションではない
String.intern() の問題については知っていますが、それを十分に活用する価値はありません。MaxPermGen のサイズを大きくしても、力はかかりませんでした (128 Mb から 256 Mb へ)。
PermGen の OOM を呼び出すその他の理由は何ですか? そのような状況では、どのような調査シナリオが最適ですか (戦略、ツールなど)?
助けてくれてありがとう