web-dev-qa-db-ja.com

なぜPERMGEN SPACEが成長しているのですか?

私はいくつかの記事を読みました、そして私は以下を理解しました(私が間違っているならば、私を修正したり、質問を編集してください):

Javaヒープは次のように分割されています。

  • 若い世代:作成されたオブジェクトここに行く、この部分は頻繁にそして安価に収集されます

  • 古い世代:若い世代のガベージコレクションを生き残ったオブジェクトここでは、この分野は頻繁に収集され、より多くのCPUの要求プロセス/アルゴリズムを使用しています(私はそれがマークスイープと呼ばれていると思います)

編集:他のユーザーに記載されているように、permgenはheapという地域の一部ではありません。

  • Permgen:この領域はあなたのアプリクラスメタデータと他の多くのものがアプリケーションの使用法に属していません。

だから、これを知っています...アプリが重い負荷の下にあるときに私のpermgenスペースが成長するのはなぜですか?私がこのスペースがアプリの負荷にもかかわらずincrementlyを記入してはいけませんが、私が最初に言ったように、私が言ったように私が言ったように私が言ったことは、いくつかの仮定について間違っています。

実際、パーマンスペースが成長している場合は、ゴミ収集またはリセットする方法がありますか?

17
Pablo Fernandez

これはデバッグにとってより迷惑な問題の1つです。あなたが成長するPermgenの使用を見ていることができる多くの理由があります。ここに2つのリンクがありますが、どのように漏洩が起こっているのか、そしてそれらを引き起こしているのかを追跡します。

http://frankkieviet.blogspot.com/2006/10/how-to-fix-dreaded-permgen-space.html

http://frankkieviet.blogspot.com/2006/10/classloader-leaks-dreaded-permgen-space.html

6
Jason Stelzer

Java eeアプリケーションで作業している場合は、おそらくクラスローダーリークです。

あなたは役に立つように次の追加のリンクを見つけるかもしれません:

http://www.zeroturnaround.com/blog/rjc201/

http://www.ibm.com/developerworks/java/library/j-dclp3/index.html

2
Sajid

あなたはクラスローダーチェーンでファンキーなことをしていますか?弦の束にintern()電話していますか?

2