私は、生産のenvに私のアプリを実行します(RHEL 5.2のx64、オラクルJRE 1.7_05、Tomcatの7.0.28)JVM引数を持つ:いくつかの時間の後JavaのOutOfMemory例外:ロードzipファイル上のmmapエラー
Iそのようになったスタックトレースを」VEの:
Java HotSpot(TM) 64-Bit Server VM warning: Attempt to deallocate stack guard pages failed.
Java HotSpot(TM) 64-Bit Server VM warning: Attempt to allocate stack guard pages failed.
mmap failed for CEN and END part of zip file
[...]
Caused by: java.lang.OutOfMemoryError: null
at java.util.zip.ZipFile.$$YJP$$open(Native Method) ~[na:1.7.0_05]
at java.util.zip.ZipFile.open(Unknown Source) ~[na:1.7.0_05]
at java.util.zip.ZipFile.<init>(Unknown Source) ~[na:1.7.0_05]
at java.util.zip.ZipFile.<init>(Unknown Source) ~[na:1.7.0_05]
at java.util.jar.JarFile.<init>(Unknown Source) ~[na:1.7.0_05]
at java.util.jar.JarFile.<init>(Unknown Source) ~[na:1.7.0_05]
at sun.net.www.protocol.jar.URLJarFile.<init>(Unknown Source) ~[na:1.7.0_05]
at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source) ~[na:1.7.0_05]
at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source) ~[na:1.7.0_05]
at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source) ~[na:1.7.0_05]
at sun.net.www.protocol.jar.JarURLConnection.getInputStream(Unknown Source) ~[na:1.7.0_05]
at java.net.URL.openStream(Unknown Source) ~[na:1.7.0_05]
at org.apache.catalina.loader.WebappClassLoader.findLoadedResource(WebappClassLoader.java:3279) ~[na:na]
at org.apache.catalina.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1478) ~[na:na]
at org.apache.http.util.VersionInfo.loadVersionInfo(VersionInfo.java:242) ~[httpcore-4.2.jar:4.2]
at org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:180) ~[httpclient-4.2.jar:4.2]
at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:158) ~[httpclient-4.2.jar:4.2]
at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448) ~[httpclient-4.2.jar:4.2]
が私のプロファイラを探し - everthingがOK(ヒープおよび非ヒープメモリは10%に使用される)であり、私が問題です見当がつかない。
この問題は毎日同時に発生し、アプリケーションの稼働時間には関係しません。その原因は何ですか?
編集:ログ・ファイル内の
新しい出力:
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=
Code Cache [0x00002aaaab790000, 0x00002aaaad240000, 0x00002aaacb790000)
total_blobs=4223 nmethods=3457 adapters=707 free_code_cache=497085Kb largest_free_block=508887936
が、私は十分なメモリを持っている:http://i.stack.imgur.com/K8VMx.jpg
回答:Javaのバージョンで 問題。 https://forums.oracle.com/forums/thread.jspa?messageID=10369413
好奇心から、あなたはYourkitの部分をどうやって理解していますか? – Erik
うん、私は 'yjp-11.0.8'を使用していますが、問題はインストール前に起こります。私は 'G1'コレクターを削除しようとしますが、私は' G1'を長年使っているので問題は解決しないと思います。また、私は今問題があります:[yjp_out](http://my.jetscreenshot.com/demo/20121010-pnud-83kb)。 –
スワップ領域が不足したり、許容されるメモリマッピングが不足したりするなどのリソースがなくなると、これらのエラーが発生します。 sudo cat/proc/$ PID/maps |を見てください。 wc -l 'と比較して' cat/proc/sys/vm/max_map_count' –