[ Team LiB ] Previous Section Next Section

Virtual Machine (VM) Versions

I have focused on the Sun VMs, as there is enough variation within these to show interesting results. I have shown the time variation across different VMs for many of the tests. However, your main focus should be on the effects that tuning has on any one VM, as this identifies the usefulness of a tuning technique. Differences between VMs are interesting, but are only indicative and need to be verified for your specific application. Where I have shown the results of timed tests, the VM versions I have used are:

1.1.8

Version 1.1.x VMs do less VM-level work than later Java 2 VMs, so I have used a 1.1.x VM that includes a just-in-time (JIT) compiler. Version 1.1.8 was the most recently updated 1.1 JVM available for my tests. Version 1.1.8 supports running with and without a JIT. The default is with a JIT, and this is the mode used for all measurements in the book.

1.2.2

I have used the 1.2.2 JDK for the 1.2 tests. Java 2 VMs have more work to do than prior VMs because of additional features such as Reference objects, and 1.2.2 was the most recently updated 1.2 JVM available for my tests. Version 1.2 supports running with and without a JIT. The default is with a JIT, and this is the mode used for all measurements in the book.

1.3.1_02

I have used the 1.3.1_02 release for the 1.3 tests. Version 1.3 supports running in interpreted mode, with HotSpot technology for the client (mixed mode) and for the server (server mode). Version 1.3 does not support a pure JIT mode. Tests labeled "1.3.1" use the default client-mode HotSpot technology, and tests labeled "1.3.1 -server" use the server-mode HotSpot technology. For the server-mode tests, I recorded the test times after the JIT generated code, i.e., the second run of tests. These times are more representative of how server-mode JVMs are used.

1.4

I have used the 1.4.0 release for the 1.4 tests. Tests labeled "1.4" use the default client-mode HotSpot technology, tests labeled "1.4 -server" use the server-mode HotSpot technology, and tests labeled "1.4 -Xint" use the interpreted mode (i.e., no JIT compilation at all). The 1.4.0 release had a few performance problems with the server mode, and Sun engineering kindly provided me with a 1.4.1 prerelease version of the server-mode JVM on which to run my tests. In addition, I've used the -Xbatch option to ensure that all the HotSpot compilation takes place in the first run through any tests, and I've recorded the second run times. These times are more representative of how server-mode JVMs are used. I do not recommend using -Xbatch in general, unless you know definitely that the first runthrough of the application can be much slower without affecting user expectations.

    Previous Section Next Section