From the little research I've done on this, it seems that audio is in fact the culprit. My educated guess is that when the game makes a sound, java queues it up to be sent to the local audio device. On VPS/Dedicated servers though, there is no audio device. So the buffers fill up until it crashes the JVM.
There are two ways to fix this, first way is Juggles method. If you have control of the script, this is the best method (maybe better with method #2? untested). Simply make a script able to disable the music, or manually do this to each acc (Go into settings, move all 3 sliders in sound options to the left).
The second way is to install an audio server. I simply installed ALSA + Pulseaudio with a "dummy" driver, and in my tests I have seen this also allows the buffer to be emptied. For a basic tutorial on this in Ubuntu:
http://askubuntu.com/questions/28176/how-do-i-run-pulseaudio-in-a-headless-server-installation
Feel free to contact me if you are having trouble as well.
Thanks again @Juggles for giving me this hint, this issue has been a thorn in me side for a while now. Not anymore