最近我遇到了一个有趣的问题。
我正在使用Angular JS开发一个前端比较复杂的项目,有一百个Jest测试。我的电脑内存有16GB,但是这个项目非常耗费内存,有时候会完全占满内存,导致电脑无法同时运行yarn test
(需要3到4GB内存)或者Cypress工作流测试而不出现延迟问题。
为了避免大的冻结(长达几分钟)和崩溃,我增加了交换空间到16GB。
然而,由于各种原因,我不得不在Windows 10上开发这个项目,但是没有遇到这些问题。一切都很顺利,即使内存也完全被占用,CPU达到100%,图形界面也不会出现延迟,甚至可以进行屏幕共享。
我甚至能够同时运行20个yarn test
而不会出现延迟,这在Linux上似乎完全不可能,即使增加了交换空间。
我发现Windows默认使用内存压缩,而Linux并不是这样,但是在我的比较中,压缩内存最多只有549MB。我最初认为这可能是gnome的问题,因为它被认为是比较耗费资源和有时候不稳定的,但我也使用KDE进行了测试,结果一样。
我也听说Windows会为图形环境分配特殊资源,而Linux可能会像对待其他进程一样处理它,但这并不能解释所有的问题,因为整个电脑在Linux上会冻结而在Windows上不会。
所以我开始想知道Windows在内存或者进程管理方面是否做得比Linux更好。
我的配置:
Computer model : Dell XPS-15-7590
Processor : Intel core i7 9750H, 2,6 GHz, 4,5 GHz turbo max (6 cores, 12 threads)
RAM : 16 Go
Graphic card : GTX 1650M
Screen : 4K 16:9
SSD : NVME 512 Go