背景
在Windows 11中安装了Linux子系统Ubuntu-22.04
在运行程序或者跨平台执行复制操作时会出现占用Windows系统内存没有释放的问题,表现就是打开任务管理器,内存一直很高,可能会导致内存占用一直积累影响后续程序执行,甚至主机卡死的情况。因此需要手动释放内存缓存。
操作步骤
- 通过PowerShell或者点击Ubuntu图标进入Ubuntu子系统
- 在命令行中执行清除缓存命令
sudo sysctl -w vm.drop_caches=3
然后就会发现Windows系统内存会被逐渐释放
附:命令解释
sudo
- 以超级用户权限运行命令sysctl
- 用于查看和修改内核参数的工具-w
- 写入模式,允许修改内核参数的值vm.drop_caches
- 内核参数,控制清除哪些缓存=3
- 将vm.drop_caches
设置为3,表示清除所有缓存
缓存类型
Linux内核维护三种主要的缓存:1. PageCache - 文件数据缓存,用于加速文件读取
- Dentries - 目录项缓存,存储文件名查找信息
- Inodes - 索引节点缓存,存储文件元数据
缓存清除级别
vm.drop_caches
的值决定了要清除哪些缓存:* =1
- 只清除PageCache
=2
- 清除Dentries和Inodes=3
- 清除所有缓存(PageCache、Dentries和Inodes)
因此,sudo sysctl -w vm.drop_caches=3
命令会清除Linux系统中所有类型的内存缓存,释放被缓存占用的内存。