The support for DestroyJavaVM was not complete in JDK/JRE 1.1. As of JDK/JRE 1.1 Only the main thread may call DestroyJavaVM. Since JDK/JRE 1.2, any thread, whether attached or not, can call this function. If the current thread is attached, the VM waits until the current thread is the only non-daemon user-level Java thread. If the current thread is not attached, the VM attaches the current thread and then waits until the current thread is the only non-daemon user-level thread. The JDK/JRE still does not support VM unloading, however.
Can someone explain what does it mean by the last sentence "The JDK/JRE still does not support VM unloading, however."? Rest of the paragraph gives the impression that unloading of the VM is supported starting with JDK/JRE 1.2.
Also it appears that we did a poor job in updating this specification from earlier versions. For example, there is a link to "Changes in JDK 1.1.2" under "1. Introduction" in the Table of Contents web page:
Clicking on "Changes in JDK 1.1.2" link takes to the changes in Java SE 6.0. i.e., the text for that link wasn't updated even though the actual content it was pointing to was updated.
Similarly it is hard to figure out the JDK version it was referring to in the following web page (although it appears under J2SE 1.5.0, the text appears to be a copy/paste from a 1999 document):