Tomcat7でWebシステムを開発しています。
先日、本番環境で"OutOfMemoryError: PermGen space"が発生しました。
下記のサイトを参考にして、「デフォルトのPermGenサイズが64MBから256Mに増やす」で、対応しようと思います。
参考にしたサイト
https://docs.oracle.com/cd/E53234_01/integrator.311/integrator_install/src/cli_ldi_server_config.html
http://d.hatena.ne.jp/sardine/20100716/p2
https://www.infoq.com/jp/news/2013/03/java-8-permgen-metaspace
http://groupsession.jp/v4/support/tomcat_setting.html
http://equj65.net/tech/java8hotspot/
環境
- Java7
- Windows Server2008 64bit
- メモリ2GB
- Tomcat7
- Tomcat の Initial memory pool: 512MB
- Tomcat の Maximum memory pool: 1024MB
ログの情報
- OutOfMemoryが発生したとき、利用していたユーザは1人
- ExcelファイルをApache POIで読み取る機能の部分で、OutOfMemory発生。読み込むExcelファイルは20KB.
- stackTraceは出力していない
- GC Logを出力していない
質問1: PermGen領域を増やしたことによる副作用はあるでしょうか?
たとえば他のJavaヒープ領域が小さくなるなど。
質問2: PermGen領域の私の考えは正しいでしょうか?
「PermGen領域は、クラスやメソッドのメタデータを保持する領域」と私は理解しています。
そこから、以下のように考えていますが、間違っていないでしょうか?
- 同時に複数ユーザが利用しても、PermGenのOutOfMemoryが発生するとは限らない
- ファイルの中身をメモリで大量に保持していたから、発生した訳ではない
- ファイル読み込み処理でたくさんのクラスをロードしているかもしれない?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/04 16:01 編集
退会済みユーザー
2016/07/04 16:03
2016/07/04 17:20
2016/07/04 20:40
退会済みユーザー
2016/07/05 14:00
2016/07/09 12:47