[Seasar-user:18261] Re: OGNLとPermanent領域圧迫の関係について

大塚 幸二 [E-MAIL ADDRESS DELETED]
2009年 8月 12日 (水) 15:41:53 JST


小林様

大塚です。
返信ありがとうございます。

>
> 「疑って」と言うことは確定していないのですか?
> 通常パーマネント領域が不足すると,ヒープが
> 十二分に有り余っていても,
>
> OutOfMemoryError: PermGen space
>
> というメッセージの OOME がスローされます.
> フル GC を繰り返すにせよ,このメッセージの
> OOME が発生しないのであればパーマネント領域は
> 不足していないのではないでしょうか.
>

情報が細切れになってしまったので
これまでの、経緯を説明させていただきます。

1.アプリが重く、レスポンスが著しく悪くなった

2.GCのログを見ると、FullGCが頻発していた
(約6秒間のFullGCが発生し、それが終了してもすぐにFullGCが発生)

3.FullGCが発生してもPermanent領域が減らないことを確認した
Permanent領域は時間経過とともに増えていっていることも確認

4.メモリ内のクラスの内訳を確認するために"-XX:+PrintClassHistogram"をオプショ
ンに追加した

5.その内訳からリフレクションクラス
(sun.reflect.GeneratedConstructorAccessor+ユニーク番号)が
大量に増えていることを確認した

現在運用上においては、FullGCが連発している段階で
手動でコンテナを再起動しているため、OOMEが発生することは
確認できていません。

コンテナ起動後、Permanent領域が増えていっていることと
FullGCが繰り返してもPermanent領域が減らないことから
最終的にはOOMEが発生するのではないかと考えています。

FullGCが発生した際のPermanent領域の開放状況としては
一部抜粋したものを以下に記載しましたが、
FullGCでは4回中1回のみPermanent領域が開放がされており
開放される場合は1回平均で2Mを開放しています。
------------------------------------------------------------------------
[PSPermGen: 639049K->639049K(641216K)]
[PSPermGen: 639273K->639273K(641088K)]
[PSPermGen: 639988K->639988K(641664K)]
[PSPermGen: 640615K->638082K(639552K)]
[PSPermGen: 638231K->638231K(639680K)]
[PSPermGen: 638364K->638364K(640256K)]
[PSPermGen: 638634K->638634K(640128K)]
[PSPermGen: 638943K->638481K(639616K)]
------------------------------------------------------------------------

当初Permanent領域が不足していると思い
現在はPermanent領域を512M(Max768)確保していますが
これ以上にPermanent領域を確保して解消するものなのかが不明なので
メモリリークについても調査を行っていました。

アプリは約1000画面、7000ファンクションポイントの規模です。
前回記載させていただいたとおり
1000リクエストで約1900クラスのリフレクションクラスが増加しました。
ここまで多くのキャッシュをするものなのでしょうか。
また、何をキャッシュしているのですか。




Seasar-user メーリングリストの案内