Doesn’t that cause the very problem it was meant to solve?
Programs ask for more memory, because they can.
Users run those programs, because there’s no indication anything is wrong.
And programs keep requesting more memory than need because the kernel cleans up after them!
Alternatively a kernel that actually gave non-malicious (?) programs the memory they requested exclusive access to would at first run worse, but long term perform better as users rightly pester app devs for apps that use excessive memory.
You've basically described the difference between how Windows handles memory allocation and how Linux handles memory allocation, each of which has its pros and cons. Not doing overcommit has it's own serious drawbacks, especially if you make use of fork().
Doesn’t that cause the very problem it was meant to solve?
Programs ask for more memory, because they can.
Users run those programs, because there’s no indication anything is wrong.
And programs keep requesting more memory than need because the kernel cleans up after them!
Alternatively a kernel that actually gave non-malicious (?) programs the memory they requested exclusive access to would at first run worse, but long term perform better as users rightly pester app devs for apps that use excessive memory.