亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

高 XMX:java.lang.outofmemory 本機內存分配 (malloc)

高 XMX:java.lang.outofmemory 本機內存分配 (malloc)

千巷貓影 2023-07-13 15:56:32
我確實在網上搜索了這個問題,但找不到可能的解決方案或解釋。我們有一個 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 kBMemFree:         4905068 kBBuffers:          172920 kBCached:          1828412 kBSwapCached:            0 kBActive:          1751828 kBInactive:        1129956 kBActive(anon):     872840 kBInactive(anon):    58348 kBActive(file):     878988 kBInactive(file):  1071608 kBUnevictable:           0 kBMlocked:               0 kBSwapTotal:       4194300 kBSwapFree:        4194300 kBDirty:                24 kBWriteback:             0 kBAnonPages:        880488 kBMapped:           334788 kBShmem:             50740 kBSlab:             133388 kBSReclaimable:      92196 kBSUnreclaim:        41192 kBKernelStack:        6880 kBPageTables:        23236 kBNFS_Unstable:          0 kBBounce:                0 kBWritebackTmp:          0 kBCommitLimit:     8224852 kBCommitted_AS:    1534484 kBVmallocTotal:   34359738367 kBVmallocUsed:      185660 kBVmallocChunk:   34359545792 kBHardwareCorrupted:     0 kBAnonHugePages:    493568 kBHugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kBDirectMap4k:      251904 kBDirectMap2M:     7088128 kBDirectMap1G:     1048576 kB更新 我們注意到此操作系統上的交換內存不起作用,它總是顯示已使用的 0 KB。這可能是 OOM 的潛在原因嗎?
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

Java HotSpot VM 分為 3 個內存空間(Java Heap、PermGen、C-Heap)。對于 32 位 VM,所有這些內存空間都會相互競爭內存。增加 Java 堆空間(使用 -Xmx)將進一步減少 C 堆的容量并為操作系統保留更多內存。

這也是為什么像您一樣將 -Xmx 減少到 3000M 會使您的程序正常工作。

查看完整回答
反對 回復 2023-07-13
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號