質問編集履歴

2 OSの詳細を記述

yuji38kwmt

yuji38kwmt score 437

2016/07/09 21:45  投稿

Tomcatで"OutOfMemoryError: PermGen space"について教えてください。
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](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](http://d.hatena.ne.jp/sardine/20100716/p2)
[https://www.infoq.com/jp/news/2013/03/java-8-permgen-metaspace](https://www.infoq.com/jp/news/2013/03/java-8-permgen-metaspace)
[http://groupsession.jp/v4/support/tomcat_setting.html](http://groupsession.jp/v4/support/tomcat_setting.html)
[http://equj65.net/tech/java8hotspot/](http://equj65.net/tech/java8hotspot/)
### 環境
* Java7
* Windows Server2008
* 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が発生するとは限らない
* ファイルの中身をメモリで大量に保持していたから、発生した訳ではない
* ファイル読み込み処理でたくさんのクラスをロードしているかもしれない?
  • Java

    24146 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Tomcat

    903 questions

    TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

1 誤字の修正

yuji38kwmt

yuji38kwmt score 437

2016/07/03 18:06  投稿

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

    24146 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Tomcat

    903 questions

    TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る