Назад | Перейти на главную страницу

Имеется достаточно памяти, но «недостаточно памяти для продолжения работы Java Runtime Environment»

Мое приложение java разбилось после трех дней работы со следующей информацией:

#
# 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
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   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:2627), pid=99975, tid=139586429245184
#
# JRE version: Java(TM) SE Runtime Environment (8.0_71-b15) (build 1.8.0_71-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.71-b15 mixed mode linux-amd64 compressed oops)

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

OS:CentOS release 6.8 (Final)

uname:Linux 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64
libc:glibc 2.12 NPTL 2.12
rlimit: STACK 10240k, CORE 0k, NPROC 257504, NOFILE 40000, AS infinity
load average:1.67 1.68 1.80

/proc/meminfo:
MemTotal:       65949688 kB
MemFree:         5425348 kB
Buffers:          772908 kB
Cached:         39944288 kB
SwapCached:         2516 kB
Active:         43029364 kB
Inactive:       13286372 kB
Active(anon):   15486952 kB
Inactive(anon):   114364 kB
Active(file):   27542412 kB
Inactive(file): 13172008 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      104856572 kB
SwapFree:       104835232 kB
Dirty:              9552 kB
Writeback:             0 kB
AnonPages:      15598604 kB
Mapped:            61676 kB
Shmem:              1940 kB
Slab:            3052564 kB
SReclaimable:    2664740 kB
SUnreclaim:       387824 kB
KernelStack:      529136 kB
PageTables:       124552 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    137831416 kB
Committed_AS:   49126512 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      172792 kB
VmallocChunk:   34359446312 kB
HardwareCorrupted:     0 kB
AnonHugePages:  14301184 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        5988 kB
DirectMap2M:     2091008 kB
DirectMap1G:    65011712 kB

Я не понимаю, почему не хватает памяти. Ставил -Xmx16G.
Насколько я понимаю, доступная память = свободна + кэширована, поэтому у нее должно быть много доступной памяти, верно?
Приложение работает на виртуальной машине (Nutanix AHV). Я прочитал в ответе по этой ссылке, что кеширование хорошо работает только на реальной машине, это правда?
https://www.linuxquestions.org/questions/linux-general-1/command-to-check-process-taking-high-cached-memory-927756/

Какие-либо другие варианты того, почему это происходит?