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

CentOS7普通用户运行Jar报VM初始化错误:无法预留足够代码缓存

问题原因

这是因为CentOS 7对普通用户设置了进程内存资源限制,root用户默认不受这类限制。Java虚拟机初始化时需要预留足够的Code Cache(代码缓存)空间,普通用户的内存配额达不到JVM的要求,所以启动失败。

解决方法

临时生效(仅当前会话)

  • 切换到目标普通用户,执行命令放开虚拟内存限制:
    ulimit -v unlimited
    
    之后再运行java -jar jarfile.jar即可正常启动。

永久生效(用户每次登录自动生效)

  • 编辑该用户的~/.bashrc配置文件,添加一行:
    ulimit -v unlimited
    
  • 执行以下命令让配置立即生效:
    source ~/.bashrc
    

精细控制内存配额(可选)

如果不想完全放开限制,可以根据JVM实际需求设置具体数值(比如允许使用32GB虚拟内存):

ulimit -v 33554432

同样把这行写入~/.bashrc就能永久生效。

排查cgroup资源限制(若上述方法无效)

如果系统通过cgroup做资源管控,需要调整该用户的cgroup内存配额:

  • 先查看当前用户的cgroup内存限制:
    cat /sys/fs/cgroup/memory/user/$(id -u)/memory.limit_in_bytes
    
  • 切换到root用户,修改限制(示例为放开限制):
    echo unlimited > /sys/fs/cgroup/memory/user/$(id -u)/memory.limit_in_bytes
    
    也可以设置具体数值,比如允许使用40GB:
    echo 42949672960 > /sys/fs/cgroup/memory/user/$(id -u)/memory.limit_in_bytes
    

内容的提问来源于stack exchange,提问作者Edawg O.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:21:26