社区如果愿意改善用户体验,当然是皆大欢喜wtz 写了:我承认我没有研究过内核的代码,但是这不代表我所说的都是”猜测“,没有根据。rosynirvana 写了:首先我没看出这为什么是自认倒霉,之前我也没见过哪个windows用户认为,没内存的时候系统应该把自己主要工作进程杀掉,让自己丢数据wtz 写了: 这个就是(多数)Windows用户和(多数)Linux用户的观念差别了。惹了麻烦,一个怨机器,一个自认倒霉。
直接kill确实不太合适,但也不能无止尽地允许任何内存分配请求。所以在分配内存的算法上还需要进一步提高。
磁盘缓存还是应当保留一部分供系统关键进程进行应急响应,所以有必要在内核参数中增加一个最小值选项。
然后下面两句话有多少是你猜的?
允许任何内存分配,也就是vm.overcommit_memory = 1,我确实不知道哪个发行版默认用这个,只有用作特殊用途的机器会这么设置
Linux当然会预留一部分内存用于基本维护,另外也会预留一部分内存让用户控件申请内存时能够迅速处理
我是站在用户体验的角度,而不是技术的角度来看OOM这个问题。多数Windows用户才不会管系统是如何分配内存的,他们只知道系统应当正确地处理正在运行的程序,不能随意停止响应。至于这背后到底是OOM还是overcommit的算法在发挥作用,他们不关心。但这恰恰是影响用户使用感受的重要方面。
所以说,没有站在用户(这里主要指初学者)的角度考虑问题,这是很多Linux发行版不被广泛认可的主要原因。
另外,类似”Linux不是小白玩的系统“这样的论调,也间接助长了社区在改善Linux用户体验方面的惰性。
Linux之类是自由软件,严格来说自由软件的开发者就是其用户,本质上就是在"自娱自乐"
商业软件是为了赚钱而生和存在,赚钱的方式就是讨好用户
自由软件是为开发者自己而生和存在
系统停止响应,并非真正停止,只是要等很长时间
我十分不理解为什么您要希望OOM?
例如自己想打开一个程序,系统虽然没有变慢,但被打开的程序被立刻OOM
这种系统还有何意义?
变慢的话,好歹还能凑合着用,被OOM的话就是连使用的可能性都没有了.