macOS的kernel_task进程占用内存问题

一、问题描述

在macOS使用时间过久后,会发现kernel_task进程占非常大的“真实内存”,真实内存就是占用的物理内存,因此会让人感觉是内存泄露,浪费macbook本来就很稀缺的内存。

二、原因分析

kernel_task占用的”真实内存“中,其实包含了很多内容,并非内存泄露。经过测试发现,kernel_task中至少存有:App被压缩的内存、部分inactive内存、部分共享内存,因此并非是内存浪费,是很合理的内存利用,要相信稳定版本macOS的内存管理能力。

三、测试过程

 在长时间使用后,kernel_task进程占用真实内存有5GB大小,经过purge命令清楚系统的部分inactive内存,清理后kernel_task缩减到4.14GB,如图所示

由此可见清除的inactive就是kernel_task占用的”真实内存”。

然后关闭开启的占用大量内存(主要是被大量压缩的内存)的进程,进程被关闭后,macOS会吧对应的压缩内存也清除掉,只有部分被关闭App的数据和代码会被系统移动到“已缓存内存”中。当关闭进程后,压缩内存显著降低,此时kernel_task占用的”真实内存“也显著降低,且kernel_task真实内存降幅与压缩内存降幅基本一致,约为1.6GB,可见kernel_task中存有macOS的压缩内存。如图所示

 经过上述试验可见,kernel_task中至少包含:已压缩的内存、部分inactive内存

在活动监视器中打开”所有进程-分层显示“,可见kernel_task进程包含了全部macOS的系统与第三方App进程,因此可见kernel_task是底层的进程,提供了最基本的服务。

四、解决方法

个人认为无需担心kernel_task的内存占用问题,因为它的内存就包含了你App的内存,想要让kernel_task缩小,无非就是关闭App,因此意义不大。

当然有一个方法可以降低一下kernel_task内存占用,就是用purge清除inactive内存,kernel_task内存就会降低。但是inactive是系统自动调度,很快inactive内存在有空余物理内存时,它就会占上来;而且purge指令只能清除部分inactive内存。具体指令如下:

purge

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值