You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java 11启动Apache NiFi 1.23.2时内存不足问题求助

解决Java 11下Apache NiFi 1.23.2 8GB内存配置启动失败问题

问题原因

Java 11默认使用G1垃圾收集器,相比Java 8默认的Parallel GC,G1需要额外的内存开销(包括Metaspace、直接内存、JVM原生内存等)。当你配置-Xms8192m/-Xmx8192m时,堆内存已占满实例的8GB内存,剩余空间不足以支撑JVM其他内存区域的分配,导致原生内存分配失败。

解决方案

1. 适度降低堆内存配置

减少堆内存大小,给JVM预留足够的非堆内存空间。修改bootstrap.conf中的内存参数:

# JVM memory settings
java.arg.2=-Xms7168m
java.arg.3=-Xmx7168m

可根据实例剩余内存情况调整(比如7G或7.5G),确保堆内存+非堆内存总占用不超过系统可用内存。

2. 显式限制非堆内存区域

通过JVM参数限制Metaspace和直接内存的大小,避免其无限制占用内存。在bootstrap.conf中添加以下参数:

# 限制元空间大小
java.arg.4=-XX:MaxMetaspaceSize=512m
# 限制直接内存大小
java.arg.5=-XX:MaxDirectMemorySize=1024m

3. 检查系统可用内存

执行系统命令查看当前可用内存:

free -h

确保系统空闲内存(包括swap)足够支撑JVM堆内存+非堆内存的总开销。如果swap不足,可适当调整swap大小。

4. 分析错误日志详情

查看hs_err_pid21924.log文件,里面会明确指出内存分配失败的具体区域(比如Metaspace、直接内存或JVM原生内存),根据日志信息精准调整对应参数。

内容的提问来源于stack exchange,提问作者alvarosaavedra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:25:08