Only slightly worse. Technically, kernel will sometimes swap out live executable code unless you set swappiness to 0.
This makes performance completely unpredictable under load.
Kernel does not "expect" things, the defaults are just heuristics not failing to malloc past amount of ram you have.
This causes all of the mentioned behaviour.
Apps allocating too big RSS for instance, deferring GC and heap compaction too late causing kernel to unload executable code.
And once you really run out of RAM, even on fast SSD swap will kill any performance. Unless you're using only hugepages.