4

JVMがクラッシュし、JVMコアpidファイルが作成されました。私はJMVコアファイルに不慣れなので、以下のヘルプを使用できます。

私が得ているエラーは次のとおりです。

#
# A fatal error has been detected by the Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?
#
#  Internal Error (allocation.cpp:117), pid=20119, tid=797133728
#  Error: ChunkPool::allocate
#
# JRE version: 6.0_21-b06
# Java VM: Java HotSpot(TM) Server VM (17.0-b16 mixed mode linux-x86 )
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
And Heap memeory statistics is,

Heap
 PSYoungGen      total 248832K, used 123509K [0x89850000, 0x9efa0000, 0xb42f0000)
  eden space 238656K, 47% used [0x89850000,0x90701918,0x98160000)
  from space 10176K, 99% used [0x98ab0000,0x9949bea0,0x994a0000)
  to   space 56448K, 0% used [0x9b880000,0x9b880000,0x9efa0000)
 PSOldGen        total 699072K, used 404738K [0x342f0000, 0x5eda0000, 0x89850000)
  object space 699072K, 57% used [0x342f0000,0x4ce30870,0x5eda0000)
 PSPermGen       total 29056K, used 28878K [0x302f0000, 0x31f50000, 0x342f0000)
  object space 29056K, 99% used [0x302f0000,0x31f23be8,0x31f50000)

JVM arguments,

VM Arguments:
jvm_args: -Xms1024M -Xmx2048M -verbose:gc -XX:+HeapDumpOnOutOfMemoryError -Xss128k -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintCommandLineFlags -XX:+HeapDumpOnOutOfMemoryError

---------------  S Y S T E M  ---------------

OS:Red Hat Enterprise Linux AS release 4 (Nahant Update 6)

uname:Linux 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686
libc:glibc 2.3.4 NPTL 2.3.4 
rlimit: STACK 10240k, CORE infinity, NPROC 274431, NOFILE 4096, AS infinity
load average:1.32 1.50 1.52

CPU:total 4 (2 cores per cpu, 1 threads per core) family 15 model 65 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext

Memory: 4k page, physical 16631944k(115380k free), swap 18940592k(18614440k free)

vm_info: Java HotSpot(TM) Server VM (17.0-b16) for linux-x86 JRE (1.6.0_21-b06), built on Jun 22 2010 01:04:46 by "java_re" with gcc 3.2.1-7a (J2SE release)

time: Sat Dec 24 11:09:25 2011
elapsed time: 84994 seconds

コアファイルからの上記の詳細に基づいて、

1)最大18GBのスワップフリーで、エラーが「スワップスペース不足」である理由は何かわかりますか?それは正しくないはずです。物理メモリのみが非常に少なく、空き容量は約115MBです。

2)16 GBの物理メモリのうち、2GBのみがJVMに割り当てられます。しかし、統計によると、ほぼ16 GBが完全に使用されており、空き容量は115MBのみです。したがって、他のプロセスもメモリを占有しているはずです。この方向にチェックする必要がありますか?

3)理想的には、JVMはJavaオブジェクトを作成して処理し、独自のネイティブライブラリオブジェクトを作成する必要があります。JVM自体のネイティブオブジェクトに使用されるメモリ。指定されたヒープ制限内で割り当てられますか、それとも完全にヒープ外で割り当てられますか?

私の理解と分析のために上記の質問に答えていただければ本当に助かります。

4

3 に答える 3

2

you have only 2gb allocated to your application so if the memory goes above it, you get an OOM Exception

jvm_args: -Xms1024M -Xmx2048M --> This is important

于 2012-01-04T06:19:35.257 に答える
0

仮想メモリが不足しているときにこのエラーが発生しました。32ビットのJVMがあり、2GBのヒープで制限に近づいているため。共有ライブラリ、スレッドスタック、およびダイレクトメモリで使用可能なアドレススペースの残りを使い果たして、スワップスペース不足エラーが発生する可能性があります。

最も簡単な解決策は、この問題を完全に回避する64ビットJVMを使用することです。また、Java 6 update 30を使用します。これには、多くの修正とパフォーマンスの改善が含まれているためです。

ところで、-Xms1024M-Xmx2048Mと同じ次のように書くことができます

-ms1g -mx2g

64ビットJVMは最新のJVMでも32ビット参照を使用するため、メモリ消費量が大幅に増加することはありません。

于 2012-01-04T08:09:34.917 に答える
0

詳細情報を入手するための適切なリンクが見つかりませんでしたが、あなたのケースでは物理メモリが使い果たされており、99% (オブジェクト空間) が使用されているため、エラーが発生しています。最大ヒープ メモリ パラメータ -Xmx によって、ヒープ メモリの割り当てを増やす必要がある場合があります。

于 2012-01-04T06:24:49.857 に答える