关于Win10下system进程占用大量内存

TL;DR version: it’s not a bug, it’s a feature!

有些人在升级到Windows 10以后,会发现有个system进程占用大量内存,比如1GB以上。目前网上众说纷纭,不过最靠谱的解释还是微软自己给出的说法

In Windows 10, we have added a new concept in the Memory Manager called a compression store, which is an in-memory collection of compressed pages. This means that when Memory Manager feels memory pressure, it will compress unused pages instead of writing them to disk. This reduces the amount of memory used per process, allowing Windows 10 to maintain more applications in physical memory at a time. This also helps provide better responsiveness across Windows 10. The compression store lives in the System process’s working set. Since the system process holds the store in memory, its working set grows larger exactly when memory is being made available for other processes. This is visible in Task Manager and the reason the System process appears to be consuming more memory than previous releases.

注意,文中用的是”Windows 10″,而不仅仅是build 10525。也就是说,windows 10里引进了一项新技术:内存压缩

以前,当物理内存快要耗尽的时候,windows会把一些不常用的内存数据转移到硬盘上的虚拟内存文件(pagefile)里,以释放物理内存给需要的程序。这样做有个坏处:当你又需要访问保存在pagefile里的数据的时候,因为需要从硬盘里读取,所以速度会非常慢,毕竟硬盘和内存的速度天差地别,即使你用的是SSD。

而更好的解决方案就是把这些数据继续留在物理内存里。但是物理内存已经见底,怎么办呢?Windows 10使用了内存压缩技术,将一部分不常使用的内存数据打包压缩起来,等到有程序需要访问那些数据的时候,再解压缩出来。因为这些都是在内存中进行的,所以速度非常快,用户不会感觉到从硬盘读取数据时候的卡顿感。唯一的额外开销可能就是增加了CPU使用率,毕竟要压缩和解压缩,不过在当今CPU过剩的时代,这根本不算事儿。

当然,内存压缩只会在物理内存使用率较高的时候才会发生,所以不会每个人都有一个内存占用超高的system进程。而且内存压缩也是有极限的,内存数据确实太多的话,windows 10还是会把一部分数据放到硬盘上。

其实这也不是什么新玩意,因为2013年的Mac OS X Mavericks就已经使用这项技术了。Linux内核里也有类似功能

所以,以后再看到windows 10的system进程占用1GB内存的时候,don’t panic.

本文为悠然居(https://wordpress.youran.me/)的原创文章,转载请注明出处!

3 thoughts on “关于Win10下system进程占用大量内存”

  1. 所以这不和*nix一样空间换时间么? 不过win因为我不懂的原因,平时内存占用若超过80%基本就快要死了似的,而不像linux,随随便便过90%玩一样

    Google Chrome 44.0.2403.157 Google Chrome 44.0.2403.157 Mac OS X  10.10.5 Mac OS X 10.10.5
  2. 我macbook air的内存永远是3g以上,win的内存技术应用太晚了,所以之前win系统都需要高配置硬件作为支持呀~

    Google Chrome 45.0.2454.85 Google Chrome 45.0.2454.85 Mac OS X  10.11.0 Mac OS X 10.11.0

Leave a Reply

Your email address will not be published. Required fields are marked *