S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

ヒープとPermanent領域

@IT:Javaパフォーマンスチューニング 第6回
J2EEの論理サーバに、9つもアプリを載せて、同時に動かしたらOutOfMemoryに。
1[G]のヒープで300[MB]程度しか使ってないのにOutOfMemoryに。
アプリ調べろってことで調べてたら、ログをよく見たら「java.lang.OutOfMemoryError: PermGen space」ってことだったらしい。
クラスをロードして、ロードして、ロードして、の結果Permanent領域が一杯になったのでは?
ということで、、再現させるために全てのアプリの画面を片っ端から表示させたら、案の定OutOfMemoryが再現した。
念のため、アプリのメモリリーク(参照しっ放し)がないかとか確認してみたり。
結果的に、(サーバを再起動したりしながら)個々のアプリは動作確認や負荷テストをしたけど、全てのアプリを普通に全部動かしてなかったのが原因らしいorz


「Java のヒープサイズ」についての簡単な説明

【JVMの起動オプション】
-XX:PermSize	Permanent 領域の初期値
-XX:MaxPermSize	Permanent 領域の最大値


ちなみにCosminexusで検証中、同じ画面で同じHTTPリクエストを送信しててもPermanent領域が増えてたのはなんでだろ?
適当な回数のHTTPリクエストを送信して、数(1〜2)[K]程度づつ。
んで、FullGCで回収されてみたり。