ネイティブメモリー割り当ての失敗により 64 ビット Linux で JVM がクラッシュする
Issue
- 致命的なエラーログに次のいずれかが表示されます。
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 12345 bytes for char in /path/to/jdk7u21/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1234567 bytes for Chunk::new
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2798), pid=4233, tid=0x00007f0077874700
#
- Red Hat Enterprise Linux (RHEL) 8 に移行すると、JVM がクラッシュし、致命的なエラーログに次の内容が記録されます。
Native memory allocation (mmap) failed to map 1234567 bytes for committing reserved memory
- 現在、RHEL 8.1 で JBoss EAP サーバーを実行していますが、1 日に 1 回突然クラッシュします。エラーなしで停止します。
server.log
には何も表示されず、ロギングが停止されるだけです。
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2805), pid=580, tid=586
#
Environment
- Red Hat Enterprise Linux (RHEL)
- OpenJDK
- Red Hat ビルドの OpenJDK
- Oracle JDK
- 64 ビット
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.