首页 > 系统相关 >清理系统centos下缓存并释放内存

清理系统centos下缓存并释放内存

时间:2024-03-25 15:37:13浏览次数:23  
标签:缓存 java centos cache free 内存 proc

问题描述

在启动容器的时候报错

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

标签:缓存,java,centos,cache,free,内存,proc
From: https://www.cnblogs.com/leepandar/p/18094450

相关文章

  • redis哨兵 ,redis集群 缓存 以及某些问题: 最左前缀原则,,celery架构
    Redis哨兵#主从复制存在的问题:#1主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变成master-哨兵解决#2主从复制,只能主写数据,所以写能力和存储能力有限-集群来解决#搭建哨兵的目的一旦一主多从的架构,主库发生故障,能够自动转移一......
  • 数据在内存中的存储
    一.整数和字符在内存中的存储1.整数的二进制表示有三种形式:原码,反码,补码。    对于整数的二进制表示形式,我们规定:二进制的最高位为符号为,正数最高位为“0”,负数的最高位为“1”。其他位为数值位。    正整数的原码,反码,补码形式一样。   负整数的反......
  • 容器镜像加速指南:探索 Kubernetes 缓存最佳实践
    介绍将容器化应用程序部署到Kubernetes集群时,由于从registry中提取必要的容器镜像需要时间,因此可能会出现延迟。在应用程序需要横向扩展或处理高速实时数据的情况下,这种延迟尤其容易造成问题。幸运的是,有几种工具和策略可以改善Kubernetes中容器镜像的可用性和缓存。在本篇......
  • C语言内存函数(1)【memcpy函数的使用与模拟实现】【memmove函数的使用和模拟实现】
    关于内存函数有四个函数需要我们学习。分别是memcpy,memmove,memset和memcmp。都在头文件string.h里面。一.memcpy函数的使用一提到这个函数,我们可能会联想到strcpy函数,但strcpy函数是针对字符串的拷贝。但是我们在写代码的时候不可能只拷贝字符串。 intarr1[]={1,2,3,4,5......
  • 一三云服务器,centos中怎么查看重启记录
    在一三云服务器管理中,经常遇到需要查看服务器操作的记录,比如重启服务器的记录日志等,接下来我就给大家简单介绍一下。要查看CentOS中的重启记录,可以使用以下命令:使用last命令查看系统启动和关机记录:lastrebootAI代码助手复制代码使用journalctl命令查看系统日志,可以筛选出......
  • C++ 类的内存分配是怎么样的?
    dynamic_memory首先通过一段代码来引入动态内存分配的主题。一个名为StringBad的类以及一个功能更强大的String类。#include<iostream>#ifndefSTRNGBAD_H_#defineSTRNGBAD_H_classStringBad{private: char*str; intlen; staticintnum_strings;public: StringB......
  • centos7 activemq启动失败的解决过程
    时隔很久重新启动虚拟机中的centos7,准备启用activemq。运行命令如下:   $./activemqstartINFO:Loading'/home/****/apache-activemq-5.18.1//bin/env'INFO:Usingjava'/usr/bin/java'INFO:Starting-inspectlogfilesspecifiedinlogging.propertiesandlog4j.pro......
  • 内存函数撼大树
    目录前言一、memcpy二、memmove三、memset四、memcmp前言本章我们学习一下内存函数,我们将从memcpy、memmove、memset、memcmp这几个内存函数的用途和使用方法方面为大家进行讲解,话不多说我们开始一、memcpyvoid*memcpy(void*destination,constvoid*sour......
  • C语言动态内存管理(重点)
    目录1、为什么要有动态内存分配2、malloc和free2.1malloc函数2.2 free函数3、calloc和realloc3.1  calloc函数 3.2 realloc函数3.3  realloc和malloc区别3.4 realloc函数存在的问题4、常见的动态内存的错误5、动态内存经典笔试题分析6、柔性数......
  • CentOS开启防火墙
    在CentOS系统中开启3306端口,通常指的是在防火墙中允许通过该端口的流量。CentOS7及更新版本使用的是firewalld作为默认的防火墙管理工具。下面是开启3306端口的步骤:打开端口:首先,你需要添加一个规则来允许3306端口的流量。使用以下命令:sudofirewall-cmd--zone=pu......