Of course, eliminating buffer overflows is orthogonal to using a virtual machine.
With universities almost immediately jumping to Java as an introductory language you got way more potential employees.
You can design a VM that still allows for buffer overflows. Eg you can compile C via the low-level-virtual-machine, and still get buffer overflows.
Any combination of VM (Yes/No) and buffer-overflows (Yes/No) is possible.
I agree that using a VM is one possible way to prevent buffer overflows.