Another common error, is walking off the end of the space that was allocated. The System can wrap the whole array with a guard page and detect the programmer mistake. So even without full memory protection, with just the two partial protection techniques, the System can stop most of the memory related errors. There are still many other things to System stability than just memory protection. But the fewer errors the better.
Programs are only as stable as the system as a whole.
There are many other issues like configurability, easy of use, quality of documentation, quality of tools, and more that all contributes to System and Application stability. Java is a safe language. So as better tools become available, OS level memory protection becomes far far less important. You will also realize that memory protection is not a single thing. It is a collection of different techniques to HELP make the System more stable.