linux释放内存命令 linux top命令的用法详细详解

什么是记忆?内存是计算机的重要组成部分之一,也称为内存和主存储器。用于临时存储CPU中的运算数据以及与硬盘等外部存储器交换的数据。它是外部存储器和CPU之间的桥梁。电脑中的所有程序都在内存中运行,内存的性能影响着电脑的整体性能。只要计算机开始运行,操作系统就会把...

什么是记忆?

内存是计算机的重要组成部分之一,也称为内存和主存储器。用于临时存储CPU中的运算数据以及与硬盘等外部存储器交换的数据。

它是外部存储器和CPU之间的桥梁。电脑中的所有程序都在内存中运行,内存的性能影响着电脑的整体性能。

只要计算机开始运行,操作系统就会把需要计算的数据从内存中转移到CPU进行计算。当计算完成时,CPU将发送结果。

内存的运行也决定了电脑的整体运行速度。

Linux内存回收机制

为什么回收:

内核需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态。当真的有大于空闲内存的申请到来的时候,会触发强制内存回收。

内存恢复有两个目标,一个用于zone,另一个用于memcg。zone的内存恢复方法分为三种,即快速内存恢复、直接内存恢复和kswapd内存恢复。

检查Linux内存情况

Check /proc/meminfo

尝试

[root@test ~]# cat /proc/meminfoMemTotal: 16166688 kBMemFree: 14051412 kBMemAvailable: 14772588 kBBuffers: 2116 kBCached: 1073260 kBSwapCached: 0 kBActive: 770384 kBInactive: 6982*** kBActive(anon): 450156 kBInactive(anon): 76748 kBActive(file): 320228 kBInactive(file): 621516 kBUnevictable: 0 kBMlocked: 0 kBSwapTotal: 33554428 kBSwapFree: 33554428 kBDirty: 476 kBWriteback: 0 kBAnonPages: 393328 kBMapped: 153828 kBShmem: 133628 kBSlab: 24***48 kBSReclai***ble: 133892 kBSUnreclaim: 112556 kBKernelStack: 13472 kBPageTables: 30496 kBNFS_Unstable: 0 kBBounce: 0 kBWritebackTmp: 0 kBCommitLimit: 41637772 kBCommitted_AS: 4257776 kBV***llocTotal: 34359738367 kBV***llocUsed: 320696 kBV***llocChunk: 34350426108 kBHardwareCorrupted: 0 kBAnonHugePages: 155***8 kBC***Total: 0 kBC***Free: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kBDirectMap4k: 279276 kBDirectMap2M: 6965248 kBDirectMap1G: 11534336 kB

使用“自由”命令查看。

尝试

[root@test ~]# free -h total used free shared buff/cache availableMem: 15G 874M 13G 130M 1.2G 14GSwap: 31G 0B 31G

参数描述:

total:总内存大小。used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。free:空闲的内存大小。shared:进程间共享内存(一般不会用,可以忽略)。buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。available:还可以被应用程序使用的物理内存大小,和free的区别是,free是真正未被使用的内存,available是包括buffers、cached的。Swap:硬盘上交换分区的使用大小。

缓冲区和缓存

Cache是为了提高CPU和内存之间的数据交换,Buffer是为了提高内存和硬盘(或者其他I/O设备)之间的数据交换。

缓存主要是为读操作设计的,但是缓存的概念可能很容易混淆。我理解的CPU本身是有缓存的,包括一级缓存,二级缓存,电影缓存。我们知道CPU的所有指令操作都是和内存对接的,CPU的处理能力远高于内存速度。所以,为了防止CPU资源闲置,英特尔等公司在CPU内部集成了一些缓存。但毕竟不能放太多电路在里面,所以这部分缓存不是很大,主要用来存放一些常用的指令和数据。缓存中的大部分数据要占用空内存来缓存请求的数据,也就是上面缓存的部分(这部分纯属个人理解,正确与否有待考证)。

Buffer主要是为写操作而设计的,更确切的说是为内存和硬盘之间的写操作而设计的。目的是集中写操作,减少磁盘碎片和硬盘重复寻址过程,提高性能。

Linux系统中有一个守护进程,会定期清除空缓冲区的内容,并写入硬盘。当手动执行sync命令时,上述操作也会被触发。

互换

虽然现在的内存已经变得很便宜,但是swap还是有很大的使用价值。合理规划和使用交换分区对系统的稳定运行至关重要。

Linux可以使用文件系统中的常规文件或独立分区作为交换空。同时,linux允许多个交换分区或交换文件。

内存泄漏和内存溢出

OOM(内存不足)是指当一个程序申请内存时,没有足够的内存空供其使用,出现内存不足;比如你申请一个整数,但是给它一个long来保存这个数,那就是内存溢出。

内存泄漏是指程序在申请内存后无法释放申请的内存空。一次内存泄漏的危害可以忽略不计,但是内存泄漏的后果很严重。再多的内存,迟早都会被占用。

如何判断内存泄漏

使用jstat -gcutil PID来观察参数Old。如果每次执行FULLGC后旧区的值都上升,就可以判断发生了内存泄漏。

如何判断内存溢出

堆转储(堆转储文件)它是Java进程在某个时间点的内存快照。有许多类型的堆转储。然而,总的来说,堆转储在触发快照时保存java对象和类的信息。一般来说,在写入堆转储文件之前会触发一次FullGC,所以FullGC之后留下的对象信息保存在堆转储文件中。

通过设置以下JVM参数,可以在OutOfMemoryError之后获得HPROF二进制堆转储文件的副本:

-XX:+heapdumponotofmemoryerror

生成的文件将直接写入工作目录。

注意:此方法需要JDK5或以上版本。

转储堆内存信息后,需要对文件进行分析,找到OOM的原因。您可以使用以下方法:

Mat:eclipse memory ***yzer,一个基于eclipse RCP的内存分析工具。具体参考:http://***.eclipse.org/***t/

Jhat:JDK自己的java堆分析工具,可以以html的形式显示堆中的对象,包括对象的数量和大小等。它还支持对象查询语言OQL。分析完相关应用后,可以通过http://localhost:7000访问分析结果。不推荐。

OOM的常见原因及解决方法

参考专家总结的9种常见的OOM原因及解决方法。

释放内存

在Linux系统下,我们一般不需要释放内存,因为系统已经把内存管理好了。但是凡事都有例外。有时,内存会被缓存占用,导致系统使用SWAP空而影响性能。比如在linux下频繁访问文件,物理内存会很快用完。当程序结束时,内存不会被正常释放,而是一直作为缓存使用。此时,需要执行释放内存(清除缓存)的操作。

自由内存操作:

尝试

sync # 强制将内存中的缓存写入磁盘echo 数字 > /proc/sys/vm/drop_caches #数字可以是0-3的整数

数字的含义:

0:不释放(系统默认值)1:释放页缓存2:释放dentries和inodes3:释放所有缓存什么是内存Linux内存回收机制查看Linux内存情况查看/proc/meminfo使用free命令查看Buffer和CacheSwap内存泄漏和内存溢出如何判断内存泄露如何判断内存溢出OOM常见原因及解决方案释放内存

本文来自至尊狂魔┈投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/550629.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-17
下一篇 05-17

相关推荐

  • 语言栏不显示了怎么办 win7语言栏修复命令

    我们在使用电脑的时候会遇到一些问题,比如Windows S10语言栏没了怎么解决问题。让我们和边肖一起往下看。操作流程:1.首先,我们在计算机的开始菜单中找到并点击设置选项。2.然后,在页面中,我们找到并单击时间和语言选项。3.然后我们首先在左边选择语言,在右边找到拼写、打

    2023-07-29 05:54:01
    1024 0
  • 电脑怎么运行命令清理垃圾 怎么用命令行清理电脑垃圾

    电脑使用一段时间后,各种电脑垃圾越积越多,导致我们的电脑出现启动慢、运行卡顿等问题。那么有什么办法可以帮助我们快速清理电脑垃圾呢?其实用运行的命令代码就可以快速清理电脑垃圾。今天我们就来看看如何使用run命令代码快速清理电脑垃圾!首先使用组合键[win+R]调出运行

    2023-07-29 02:42:01
    882 0
  • 常用的dos命令教程 dos基本命令大全cmd

    一般来说dos命令都是在dos程序中进行的,如果电脑中安装有dos程序可以从开机选项中选择进入,在windows 系统中我们还可以从开始运行中输入cmd命令进入操作系统中的dos命令,如下图:严格的说,windows 中的命令窗口并不是真正意义上的dos操作界面,其功能并不全面,真正的dos

    2023-07-28 17:35:01
    331 0
  • cad画斜线怎么画 cad画45度斜线命令

    CAD是一个强大的绘图软件。学好了,工资也不会低。但是对于从来没有接触过CAD的朋友来说,刚开始学这个软件是很难的,但是要想学会,还得下功夫。因此,边肖为大家整理了一份CAD入门教程。想学CAD的朋友要来看看!先看看快捷方式说明:1.创建直线的捷径是L+空 grid。2.创建圆的

    2023-07-28 04:25:01
    593 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信