Eclipse执行mvn启动命令提示共享内存文件空间不足解决方法
根因定位
从df -h输出可以直接确认问题:根挂载点/dev/mapper/vgubuntu-root使用率100%,可用空间为0。JVM默认的临时文件目录、Maven默认本地仓库都位于根分区下,没有剩余空间创建共享内存文件就会触发该报错。注意/dev/shm对应的tmpfs分区还有7.8G空闲,不是共享内存挂载点本身容量不足。
零风险清理方案(不会误删项目依赖、系统核心文件)
- 清理Maven冗余构建缓存:先在所有自己的项目目录下执行
mvn clean,只会删除各项目下的target构建产物,不会触碰任何依赖文件。如果需要进一步清理本地仓库冗余,可以执行mvn dependency:purge-local-repository -DreResolve=false,该命令只会移除本地仓库中关联项目的旧快照版本依赖,不会删除正在使用的稳定版依赖,无业务风险。 - 清理系统临时文件:执行
sudo find /tmp -type f -atime +3 -delete,只会删除/tmp目录下3天以上未被访问的临时缓存,不会影响当前运行程序正在占用的临时文件。 - 清理APT安装包缓存:执行
sudo apt clean,仅删除APT下载留存的旧安装包文件,不会影响任何已安装软件、项目代码和依赖,通常可释放数百MB到数GB空间。 - 桌面版Ubuntu可直接清空回收站,很多时候删除的大文件未清空回收站会持续占用根分区空间。
即时绕过方案(无需删除文件,立即生效)
利用/dev/shm的剩余空间,启动时直接指定JVM临时目录到该分区即可,命令修改为:
mvn clean package spring-boot:run -Djava.io.tmpdir=/dev/shm
如果是在Eclipse中启动,直接找到对应启动配置的VM arguments栏,添加-Djava.io.tmpdir=/dev/shm参数即可,不需要修改全局系统配置。
长期优化建议
- 可将Maven本地仓库默认路径(默认位置为
~/.m2/repository)修改到其他有充足剩余空间的分区,避免根分区占满后直接阻断Maven、JVM运行。 - 定期检查根分区使用率,使用率达到80%时提前清理缓存,避免分区完全占满影响所有系统程序运行。
内容的提问来源于stack exchange,提问作者coman
相关产品推荐
相关产品推荐

