概要
Tomcatを使ったWebアプリケーション(Windowsサービスとして登録)で下記のエラーが出ていたため、メモリを増やしてみた。
試行錯誤した過程とともにその方法を書く。
java.lang.OutOfMemoryError: PermGen space
- 環境・バージョン
- Windows 10 Pro
- Java7
- Tomcat6
試行錯誤の過程
- setenv.batに設定を書いてみる(→サービスの場合うまくいかない)
- tomcat6w.exeをダブルクリックしてみる(→サービスの名前を変更している場合うまくいかない)
- うまくいった方法1(コマンドで・・・)
- うまくいった方法2(レジストリを・・・)
1.setenv.batに設定を書いてみる(→サービスの場合うまくいかない)
Tomcatを使ったWebアプリケーション(Windowsサービスとして登録)で下記のエラーが出ていた。
java.lang.OutOfMemoryError: PermGen space
Tomcatのメモリの設定の仕方を検索すると、
JavaVMの起動オプションでCATALINA_OPTSを設定するとか、
CATALINA_OPTSの設定をcatalina.batまたはsetenv.bat(catalina.batから呼ばれる)に書くとか出てくる。
Tomcatのフォルダ\bin\setenv.batを作成し、
set CATALINA_OPTS=-Dfile.encoding=UTF-8 -Xms3072m -Xmx3072m -XX:PermSize=256m -XX:MaxPermSize=256m -server
と書いてみるが、うまく反映されているように見えない。
どうやらWindowsサービスにしている場合はsetenv.batに書いても反映されないらしい。
2.tomcat6w.exeをダブルクリックしてみる(→サービスの名前を変更している場合うまくいかない)
Windowsサービスにしている場合、Tomcatのフォルダのbin\tomcat6w.exeを起動すると設定画面が開くという情報があり、
ダブルクリックしてみるが・・・
「指定されたサービスはインストールされたサービスとして存在しません。」
というエラーメッセージが表示される。
どうやらサービスの名前を「tomcat6」から変えているので開かないらしい。
また、設定画面を開いて設定変更するのもよいが、複数のクライアントに配布しているアプリケーションのため、できればバッチファイルをクリックしただけでメモリサイズの変更がされるようにしたい・・・。
3.うまくいった方法1(コマンドで・・・)
結局公式サイトにたどりつき・・・希望通りコマンドで設定を変えることができるようになった!
Apache Tomcat 6.0 Windows service HOW-TO
https://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html
設定画面を表示するときは tomcat6w.exe //ES//[サービス名] ←「tomcat6」の後にwあり
(Tomcatのフォルダ)\bin\tomcat6w.exe //ES//[service-name]
設定を書き換えるときは tomcat6.exe //US//[サービス名] ←「tomcat6」の後にwなし
(Tomcatのフォルダ)\bin\tomcat6.exe //US//[service-name] ++JvmOptions="-Xms1024m" ++JvmOptions="-Xmx3072m" ++JvmOptions="-XX:PermSize=256m" ++JvmOptions="-XX:MaxPermSize=512m" --JvmMs=1024 --JvmMx=1024
↑ パラメータ名の前に「--」を付けると上書き、「++」を付けると追加になる
(何度も実行すると、実行するたびに追加されていく・・・)
4.うまくいった方法2(レジストリを・・・)
Daemon - Daemon : Procrun
https://commons.apache.org/proper/commons-daemon/procrun.html
このサイトの一番下に書いてあるが、レジストリを直接編集するという方法もある。
32bitOS
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\ProcRun 2.0<ServiceName>\Parameters
64bitOS
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\ProcRun 2.0<ServiceName>
参考URL
Apache Tomcat 6.0 Windows service HOW-TO
https://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html
Daemon - Daemon : Procrun
https://commons.apache.org/proper/commons-daemon/procrun.html
起動時のプロパティとオプションの設定
https://ja.confluence.atlassian.com/adminjiraserver/setting-properties-and-options-on-startup-938847831.html
→ここに全部書いてあった!