When to Restart the Server
Generally speaking you need to restart the server whenever the application's code changes. JDWP sessions allow you to make nominal changes to the running code, so long as the class' method signatures don't change.
If you are working with a dataset's SPT, you can publish the SPT to the server and debug it without restarting. Similarly, you can make changes to JavaScript files, SqlDef, and most XML files without restarting the server. Don't forget you still have to execute the build targets to publish your changes to the server.
If you are working with the debug perspective and too much code has changed for the debugger to track, Studio will give you a message to this effect and prompt you to either disconnect or continue the debugging session. If you continue, you will find your latest changes unavailable for debugging.