Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file

  • Post author:
  • Post category:java





Linux根目录爆满,解决(/dev/mapper/rhel-root 98%问题)



1.1 首先确定是否是磁盘空间不足



1.1.1 输入命令:

df –h 查看磁盘信息

在这里插入图片描述



1.1.2 发现已经使用率达到98%(通常是98%,但是这里我已经改过),所有需要删除大文件数据



2.1 其次查找大文件

du -h --max-depth=1 命令代表寻找当前目录,哪个文件夹占用空间最大



2.1.1

进入根目录

cd /      ------进入根目录
du -h --max-depth=1        -------寻找当前目录,哪个文件夹占用空间最大

在这里插入图片描述

在这里插入图片描述



2.1.2 找到对应文件夹,发现占用N个G,确定是否有用,无用则删除



2.2 文件有用的话进入到对应的文件

cd /对应的文件



2.2.1 找到对应的文件之后,找到对应文件下的logs(在日志目录)

在这里插入图片描述



2.2.2 除了.out目录尽量别删(看自己的需求),其他的都可以删



2.2.3 清除catalina.out方法 (logs目录下其他文件手动删除即可,也可以用命令)



使用命令

du -h catalina.out       ----------(可以看到.out目录的大小)

true>catalina.out         -----------(直接清除.out文件)

在这里插入图片描述





注意事项




6.6由于df是计算的进程占用空间,du -h 计算的实际文件占用空间,所以会导致以下情况发生



6.6.1 如果删除了文件,但是磁盘空间还是没有释放,那是进程还在导致的。可以通过以下操作

lsof -n |grep deleted     --------------(  根目录下,可以看看空间占用情况)



6.7找到占用内存最大的,并且确定不用的可以用kill -9 pid 删除pid为对应的进程号即可



6.7.1 但是/分区下面的目录,每个查询加起来也不到4G空间,多出来的40G不知道在哪里?

find查询也没有找到大文件;



6.7.2 分析原因:

可能是系统进程占用的空间没有释放掉,导致的;

通过命令查看发现,进程有很多个,都是处于deleted状态,文件大小刚好是对应,正好是多出来的空间,找到问题所在;



6.7.3解决办法:

找到对应的进程号,kill掉即可;

在这里插入图片描述

在这里插入图片描述



6.7.8 查看空间已经恢复:

df -h

在这里插入图片描述



最后重启服务即可



9.9 不能解决 可以试试 ps aux|grep java命令

ps aux|grep java
ps aux

在这里插入图片描述



9.9.1 stat 中的参数意义如下:

D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X   死掉的进程
< 高优先级
n   低优先级
s   包含子进程
+   位于后台的进程组



9.9.2 使用ps格式输出来查看进程状态:

ps -eo user,stat..,cmd
user 用户名
uid 用户号
pid 进程号
ppid 父进程号
size 内存大小, Kbytes字节.
vsize 总虚拟内存大小, bytes字节(包含code+data+stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单格式



版权声明:本文为yx_smile原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。