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

Linux服务器执行Java命令报错:无法分配元空间的问题求助

解决JVM元空间分配失败问题

这个Error occurred during initialization of VM Could not allocate metaspace: 1073741824 bytes错误很常见,本质是JVM启动时试图分配1GB的元空间(Metaspace)但没法拿到足够内存。既然你已经排除了PATH的问题,咱们从这几个方向入手解决:

1. 先确认服务器内存是否足够

先看看当前服务器的可用内存情况,执行:

free -h

如果剩余物理内存连1GB都不到,那要么关掉一些没用的进程释放内存,要么考虑升级服务器内存。要是你是在容器(比如Docker)里跑的,还要检查容器的内存配额是不是设得太低了。

2. 手动调低元空间的分配参数

如果内存足够,但JVM默认的元空间初始值设得太激进,你可以手动指定更小的元空间大小来启动JVM,比如:

bin/java -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -version

这里-XX:MetaspaceSize是启动时分配的初始元空间大小,-XX:MaxMetaspaceSize是元空间的上限。你可以根据服务器的实际内存情况调整数值,不用非要保持1GB的默认值。

3. 检查系统的进程内存限制

有时候系统的ulimit限制会导致单个进程能使用的内存被卡得很死,你先看看当前用户的内存限制:

ulimit -a

如果看到max memory size的值小于1GB,那需要调整这个限制:

  • 临时生效:执行ulimit -v unlimited(或者设一个足够大的数值,比如ulimit -v 2097152,对应2GB)
  • 永久生效:编辑/etc/security/limits.conf,添加以下内容(把your_username换成你的实际用户名):
    your_username soft as unlimited
    your_username hard as unlimited
    
    保存后重新登录用户就能生效。

4. 尝试更换JDK版本

极少数情况下,某些老旧的JDK版本可能存在元空间分配的bug,如果你上面的方法都试过还是不行,可以换成OpenJDK 11或17这类稳定的新版本JDK,再测试java -version是否正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:37:48