清理系统centos下缓存并释放内存
问题描述
在启动容器的时候报错
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
output:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8329887744 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid174.log
error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005cf800000, 8329887744, 0) failed; error='Not enough space' (errno=12)
at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119)
at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38)
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:135)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)
根据提示得知:内存不足了!
查看缓存
查看缓存的使用情况
free -h
可以看到系统的缓存使用情况
total used free shared buff/cache available
Mem: 15G 11G 471M 896M 3.9G 3.2G
Swap: 0B 0B 0B
free从/proc/meninfo收集到以下信息:
-
Men:内存的使用情况
-
Swap:交换空间的使用情况
-
total:总内存
-
used:已经使用的内存
-
shared:共享内存(主要被tmpfs使用的内存)
-
buff/cache:buff和cache的和
-
available:启动新进程时可用的内存
解读:
-
buffer 在操作系统中指 buffer cache, 中文一般翻译为 "缓冲区"。
-
cache 在操作系统中指 page cache,中文一般翻译为 "页高速缓存"。页高速缓存是内核实现的磁盘缓存。它主要用来减少对磁盘的 I/O 操作。
-
free 是真正尚未被使用的物理内存数量。
-
available 是从应用程序的角度看到的可用内存数量。
当centos频繁读取文件后,物理内存会很快被用完,当程序结束后,内存不会被正常释放,而是一直caching,因此有必要手动清理系统缓存释放内存。
清理缓存
sync
操作系统在运行过程中,会把访问到的文件放到buffer中。为了避免断电,等故障造成数据丢失,我们需要把buffer中的缓存数据写入到磁盘。
手动执行sync命令
> sync
手动释放内存的命令
每个 Linux 系统有三种选项来清除缓存而不需要中断任何进程或服务。
. /proc是一个虚拟文件系统,我们可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。
> echo 3>/proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:仅清除页面缓存(PageCache)
2:清除目录项和inode
3:清除页面缓存,目录项和inode
再次查看内存情况
[root@ecs-410441-0001 ~]# free -h
total used free shared buff/cache available
Mem: 15G 11G 2.2G 896M 2.1G 3.1G
Swap: 0B 0B 0B
恢复默认设置
> echo 0>/proc/sys/vm/drop_caches
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix