問題タブ [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 - PermGenの内容を分析する方法は?
PermGenのダンプを取得して、なぜそれがいっぱいになっているのかを確認したいと思います。これを分析する方法はありますか?log4j、tomcat webappのリロードなどの一般的な容疑者についてはすでに知っていますが、アプリケーションにもカスタムプロキシ生成コードがあり、内部を調べたいだけです。
これはどういうわけか可能ですか?
java - PermGen スペースまたはロール マイ オウン インターン メソッドを使用しますか?
特注のワイヤ プロトコルを使用して TCP 経由で送信されたメッセージを処理するコーデックを作成しています。デコード プロセス中に、多数String
の 、 、BigDecimal
および日付を作成します。クライアント/サーバー アクセス パターンは、クライアントがリクエストを発行し、何千ものレスポンス メッセージをデコードすることが一般的であることを意味します 。String
BigDecimal
したがってInternPool<T>
、オブジェクトの各クラスをインターンできるクラスを作成しました。内部的に、プールはWeakHashMap<T, WeakReference<T>>
. 例えば:
私の質問: InternPool
forを使用していますが、PermGen スペースを使用すると思われる'sメソッドの代わりにBigDecimal
for を使用することも検討する必要がありますか? PermGen スペースを使用する利点は何ですか?String
String
intern()
maven-2 - maven-glassfish-plugin に割り当てられたメモリを増やすにはどうすればよいですか?
組み込みの Glassfish に Maven プラグインを使用しています。プラグインの宣言は次のとおりです。
データ集約型の Web アプリを数回クリックした後、PermGen スペースが不足しました。
java.lang.OutOfMemoryError: PermGen スペース
より多くのメモリを使用するように MAVEN_OPTS を既に構成しています。
しかし、生成された Java プロセスは、mvn glassfish:run
約 0.5 ギガバイトのメモリしか確保できていないようです。
Glassfish プラグインには、メモリを増やすための構成設定がありますか?
ありがとう!
java - permgenスペースを増やす
私はtomcat6.0を使用していますが、インデックスを作成している間(tomcatを起動している間ではありません)、permgenスペースエラーが発生します。
どうすればそのスペースを増やすことができますか?
ありがとう
java - Mavenビルドの「java.lang.OutOfMemoryError:PermGenspace」
Mavenプロジェクトのビルド中にこのエラーが発生し、MAVEN_OPTSを増やしましたが、すべて同じです。同様の投稿がいくつか見つかりましたが、それらは別のものを参照しています。これを修正するにはどうすればよいですか?
Mavenエコシステムで修正する方法ほど心配していません
java - 利用可能な最大スペースを埋めるためにPermGenサイズが拡張されていない
Javaプロセスを実行しています。jstatを使用すると、permgenの使用率と容量がほぼ同じであることがわかります。つまり、現在の容量はほぼ満杯ですが、指定された最大permgensizeをはるかに下回っています。
これは標準ですか、それともある程度のヘッドルームスペースが割り当てられることを期待する必要がありますか?
標準のSun1.5JVM
java - JAXBクラスローダーのリークがありますか
Glassfishにアプリケーションをデプロイしています。時間の経過とともに、ロードされるクラスの数は数百万に達し、私のpermgenは上昇するようです。
トラブルシューティングを支援するために、jvm引数に以下を追加しました。-XX:+ PrintGCDetails -XX:+ TraceClassUnloading -XX:+ TraceClassLoading
出力を見ると、同じクラスが何度もロードされているのがわかります。基本的に、Webサービスが呼び出され、JAXBを使用してxmlを処理するたびに。
[JVM_DefineClassからcom.strikeiron.ZIPCodesInRadius $JaxbAccessorF_userIDをロードしました][JVM_DefineClassからcom.strikeiron.ZIPCodesInRadius$JaxbAccessorF_userIDをロードしました]
これはリークを示していますか?もしそうなら、どうすれば解決できますか?
tomcat - TomcatのJRubyonRailsでPermGenの問題を追跡する
Tomcatで実行されているJRubyonRailsで記述された小さなWebアプリケーションを実行しています。別の本番Webアプリケーションと共有されているSpringバックエンドを使用しています。残念ながら、PermGenの問題が発生し続けています。
OS:Ubuntu Linux 2.6.24-24-サーバー#1 SMP x86_64 GNU / Linux Java:1.6.0_21 Tomcat:6.0.28 JRuby:1.5.0 Rails:2.3.7
現在、Google、Yahoo、Baiduによってクロールされているため、サイトの使用率は上がっています。私はJConsoleを使用してTomcatを監視してきましたが、クラスの数が多すぎるという問題が確実に発生しています。tomcatが起動すると、約12,000のクラスがロードされます。8時間後、約75,000のクラスがロードされました。PermGenは同時に100MBから460MBになります。
クラスのアンロードは機能していますが、同じ8時間で約500クラスしかアンロードされませんでした。PermGenが収集されることはないようです。
Tomcat用に次のVMオプションを使用して実行しています。
明らかに、ある種のリークがあります。問題は、どのようにどこにあるのかということです。誰が、何がこれに責任があるのかを追跡する方法について何かアドバイスはありますか?それが私たちの側の本当にばかげた間違いであることを願っていますが、どこから始めればよいのかわかりません。
アドバイスをいただければ幸いです。
編集
着信リクエストごとに1つの新しいクラスが作成されているようです。
編集2
それは間違いなくJRubyに関連しています。JConsoleを使用して、クラスローダーの詳細モードを有効にしました。これがcatalina.outからのサンプルです:
したがって、問題は、これらの追加クラスの作成を担当する当事者をどのように追跡するかということです。
編集3
これが問題かどうかはわかりませんが、どういうわけか、クラスローダーの数が非常に多くなっています。走っjmap -permstat PID
て得た:
それは少し過剰に思えます。大部分は、、、またはの3種類のクラスローダーのsun.reflect.DelegatingClassLoader
いずれorg.jruby.util.JRubyClassLoader
かorg.jruby.util.ClassCache$OneShotClassLoader
です。繰り返しますが、からのサンプル出力jmap -permstat
:
java - Netbeans Java Debugger がメモリ不足エラーでクラッシュする
最近、Netbeans 6.8 を使用して JSF Web アプリケーションで作業しているときに、常に PermGen: Out Of Memory エラーが発生します。フォーラムで何人かが提案したように、これはコードのホットスワップとは関係がないことにも気付きました。通常、コードを再デプロイするたびに、ローカル Web サーバーである Tomcat 6.0 を再起動します。これは私にも時々発生していましたが、最近では頻繁に発生しています。通常、クラッシュするまでに 2 分以上かかることはありません。
この問題について私が行った重要な観察は、デバッガーを実行しているときにのみ発生するように見えるということです。サーバーを定期的に起動すると、無期限に実行されます。デバッグ モードで実行するとすぐに、この問題が発生します。
Tomcat で Java の JAVA_OPT メモリ設定を増やすためにこれまでに見つけたすべてのヒントを試しました。netbeans.conf で Netbeans に使用できるメモリを増やしてみました。まだ運がありません。私が行った特定の構成変更を確認したい場合は、それも投稿できます。
また、これは Java のメモリ リークの結果である可能性があることも読みました。私は Netbean のプロファイラーを実行してみましたが、実際に役立つことを行う前にクラッシュすることがよくありました。さらに、それが実行されたとき、ばかげた世代を持つすべてのオブジェクト割り当ては、Java ライブラリまたはプリミティブのものでした。たとえば、最大の世代を持つ char[] は、アプリの最大のメモリ ホグでした。
誰かが以前に同様の問題を抱えていたかどうか、もしそうなら、どのように解決したかを知りたいです。これは私の仕事をする能力を深刻に妨げ始めています。
助けてくれてありがとう。
grails - PermGen エラーが発生することなく、同じ Web サーバー上で複数の Grails アプリを実行する方法はありますか?
いくつかの Grails アプリケーションを開発し、Jetty に WAR をデプロイしています。各アプリケーションを一度に 1 つずつ実行すると、約 200 ~ 300 MB のメモリでホバリングしますが、これはまったく問題ありません。ただし、アプリケーションをさらに追加すると、メモリ フットプリントが大幅に増加します。3 つのアプリケーションを実行すると、通常、約 900 MB のクラッシュが発生します。
3 つのアプリケーションすべてに Quartz ジョブがあります。PermGen のサイズを大きくしようとしましたが、役に立ちませんでした。また、Web サーバーにメモリを追加することはできません。Grails アプリのサイズを小さくする簡単な方法はありますか?