Linux系统交换空间使用率100%,内存使用率才7%,为啥?

等等,昨天我在想那台旧的 MacBook Pro。
这辆车配备了 Photoshop。
每次我打开一个大图像时,内存使用率都会跳到7 0%,但奇怪的是,交换空间实际上变成了红色。
这时,我看着系统监视器,心里嘀咕:显然是某个特别消耗内存的程序没有运行。
后来我想,也许系统先清除了这些无用的缓存,然后,Photoshop一打开,内存就突然变得局促了。

这种事情其实很常见。
我有一个朋友,他的 ThinkPad 使用了 1 0 年,运行 Windows 1 0,内存只有 4 GB。
有一天他问我为什么一打开浏览器,PPT就卡住了。
我过去一看,发现交换空间已经快用完了。
当时他还很疑惑,说道:“我真的不会打开新标签。
”后来我提醒他,他的防病毒软件有一个设置,可以将所有临时文件保存在硬盘上,从而释放内存供他自己使用。

你看,有时候问题并不是内存真的不够,而是系统太“聪明”了。
感觉你的内存太值钱了,应该保留给重要的东西。
例如,您最近经常打开的Excel文件,或者浏览器收藏夹中的某个网页,它会将数据移动到您的硬盘上作为“备份”,使您下次打开时不必等待很长时间。
就像我家楼下的餐厅。
每次你买酱油时,你都会得到同一瓶酱油。
老板记住了,下次你来的时候给你填。
你不必每次都喊“把旧的给我拿来”。

不过话说回来,如果系统总是做这种“拆东墙补西墙”的工作,是不是说明它太穷了,不能很好地管理自己的资源呢?我最近研究了Linux的vm.swappiness设置,据说调整它可以改变它的“坏习惯”。
但我尝试了一下,降低了价值并发现系统响应慢了一些,好像缓存又被当成真金白银了。
这真的很有趣:内存管理如何成为内存分配和处理的“心理战”。

linux进程占用内存高的原因

关于Linux进程内存占用高的问题,我之前在论坛上也遇到过很多类似的情况。
说实话,内存使用率高的情况非常复杂,背后可能的原因有很多。

让我举个例子。
我的一位朋友之前帮助我对内存使用率较高的 Java 应用程序进行故障排除。
后来我发现有一个循环不断创建新对象,并且在创建新对象后它不会销毁对象,从而导致内存泄漏。

1 .内存泄漏:这是最常见的。
这就像在循环中不断申请内存,但不释放它。
如果你买了东西却不还钱,那就等于有一天破产了。
有一次我在优化一个系统的时候,发现在处理大量数据的时候,是因为内存泄漏。

2 过程算法非常复杂:有时;该过程执行的任务非常复杂,需要大量的计算。
它看起来像是一个非常复杂的数学问题,需要大量的空间来计算。
例如,一些大数据处理或复杂的数学运算会导致内存使用量增加。

3 不合理的数据存储:缓存虽然这是提高性能的好方法,但过多的缓存数据或不适当的缓存策略可能会导致内存使用过多。
我曾经遇到过大量缓存数据的问题,并且内存使用量非常可怕。

4 内存映射错误:有时,由于进程错误地将太大的文件映射到内存,或者映射参数设置不正确。
这也是内存使用率高的一个原因。

5 系统配置问题:例如内存分配过多或交换空间不足。
这些配置问题也可能导致内存使用过多。

总之,内存占用高的场景非常复杂,需要具体问题具体分析。
有时候,你valgrind,你可能需要使用一些工具来分析内存使用情况,比如gdb。
我在这方面有一些经验,因为我亲自处理过很多这方面的案例。
不过,我记得数据大约是 X,但我建议检查一下。
毕竟时代在变,技术也在更新。

虚拟内存在哪设置

虚拟内存设置因系统而异。

窗口: 系统属性调整。
搜索“系统信息”或右键单击“此电脑”和属性。
高级选项卡→性能→更改页面文件。
取消自动管理,选择非系统盘。
自定义大小为物理内存的1 .5 倍(8 GB → 1 2 GB)。
重启生效。

macOS: “关于本机” → 存储 → 管理。
交换空间通常是自动管理的。
特殊要求可手动调整。
在继续之前备份数据。
Linux: 从命令行调整交换空间(Swap)。
使用 free -h 或 swapon --show 来查看。
创建交换文件: sudo fallocate -l 2 G /交换文件 须藤 chmod 6 00 /交换文件 须藤 mkswap /交换文件 sudo 交换电话 /swapfile 添加到/etc/fstab即可永久生效。

一般建议: 验证物理内存(例如1 6 GB)。
监视使用情况(Windows 的任务管理器)。
如果您不熟悉Linux,请先尝试一下。
不要盲目放太大。

称一下体重。