高 XMX:java.lang.outofmemory 本机内存分配 (malloc)

我确实在网上搜索了这个问题,但找不到可能的解决方案或解释。
我们有一个 CentOS 6 VM,具有 8 GB RAM、64 位、Open JDK 1.8。我们正在尝试使用 -Xmx6000M 运行 Java 程序。
它只是在启动时崩溃,并出现以下内存不足错误:

native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate

它只执行开始的几行代码(没有太多内存分配<500MB)并不断崩溃。

有趣的是,如果我将 -Xmx 更改为 3000M,它就会开始正常工作,并且我的程序启动并且一切正常。
根据我的理解,Xmx表示JVM可以达到的最大堆内存,并且是按需分配的。所以,我不知道即使 JVM 没有达到 1 GB 堆,它是如何导致崩溃的,以及减少 Xmx 如何解决这个问题?
我知道如果操作系统无法提供所需的内存,JVM 可能会因 OOM 而崩溃,但这里操作系统始终有超过 3 GB 的可用内存。

请指教。

/etc/proc/meminfo 的输出是:

MemTotal:        8061104 kB

MemFree:         4905068 kB

Buffers:          172920 kB

Cached:          1828412 kB

SwapCached:            0 kB

Active:          1751828 kB

Inactive:        1129956 kB

Active(anon):     872840 kB

Inactive(anon):    58348 kB

Active(file):     878988 kB

Inactive(file):  1071608 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:       4194300 kB

SwapFree:        4194300 kB

Dirty:                24 kB

Writeback:             0 kB

AnonPages:        880488 kB

Mapped:           334788 kB

Shmem:             50740 kB

Slab:             133388 kB

SReclaimable:      92196 kB

SUnreclaim:        41192 kB

KernelStack:        6880 kB

PageTables:        23236 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:     8224852 kB

Committed_AS:    1534484 kB

VmallocTotal:   34359738367 kB

VmallocUsed:      185660 kB

VmallocChunk:   34359545792 kB

HardwareCorrupted:     0 kB

AnonHugePages:    493568 kB

HugePages_Total:       0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:      251904 kB

DirectMap2M:     7088128 kB

DirectMap1G:     1048576 kB

更新 我们注意到此操作系统上的交换内存不起作用,它总是显示已使用的 0 KB。这可能是 OOM 的潜在原因吗?


千巷猫影
浏览 91回答 1
1回答

Helenr

Java HotSpot VM 分为 3 个内存空间(Java Heap、PermGen、C-Heap)。对于 32 位 VM,所有这些内存空间都会相互竞争内存。增加 Java 堆空间(使用 -Xmx)将进一步减少 C 堆的容量并为操作系统保留更多内存。这也是为什么像您一样将 -Xmx 减少到 3000M 会使您的程序正常工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java