The
Java HotSpot[TM] virtual machine
now uses "full-speed debugging". In the previous version of HotSpot, when
debugging was enabled, the program executed using only the interpreter. Now,
the full performance advantage of HotSpot
Technology is available to programs running with debugging enabled.
The improved performance allows long running programs to
be more easily debugged. It also allows testing to proceed
at full speed and the launch of a debugger to occur on an exception:
For details on launch "onthrow" and launch "onuncaught", see
Connection and Invocation Details
.
Setting a breakpoint only inhibits compilation (full speed execution) for
the method containing the breakpoint. Execution reverts to the interpreter
during some debug operations such as single-stepping and when method
entry/exit or watchpoints are set.
As of version 1.4.1, full-speed debugging is available with both the
Java HotSpot Client Vm (default) and Java HotSpot Server VM (invoked
with the -server command-line flag). In the Java 2 SDK
v1.4.0, full-speed debugging was available only with the Java HotSpot
Client VM.
Even without creating a VMDeathRequest, a single
unsolicited VMDeathEvent will be sent with a
suspend policy
of SUSPEND_NONE.
This request would typically be created so that a
VMDeathEvent with a suspend policy of
SUSPEND_ALL
will be sent. This event can be used to assure
completion of any processing which requires the VM
to be alive (e.g. event processing). Note: the
unsolicited VMDeathEvent will still be sent.