With jdk 1.5 we have one handle (memory mapped file handle) opened for every jars but in jdk 6 we have two open file handles for every jars (one handle is the memory mapped handle as in jdk 1.5 and the other one is a handle for (Reg) regular file).
Steps to reproduce:
See comments section how to reproduce at Sun Internal network.
Download JDeveloper 11 Technology Preview 4 from Oracle website (get jdevstudiobase1111.zip) and run it with the command line arguments mentioned below.
Let's assume jdev is installed under /jdev/jdevtp4 and 1.5 and 6 are available respectively from /java/jdk1.5.0_16 and /java/jdk6_07.
Use the following command lines and call lsof on the process id after starting up jdeveloper.
sh /jdev/jdevtp4/jdev/bin/jdev -su -J-Dide.jarcache.disabled=true --setjavahome=/java/jdk1.5.0_16
sh /jdev/jdevtp4/jdev/bin/jdev -su -J-Dide.jarcache.disabled=true --setjavahome=/java/jdk6_07
Essentially all jars that we have opened while starting jdeveloper appears as a single handle under 1.5 and two handles under 1.6
java 13012 user mem REG 253,0 749921 39813272 bc4jtester.jar
java 6284 user 289r REG 253,0 749921 39813272 bc4jtester.jar
java 6284 user mem REG 253,0 749921 39813272 bc4jtester.jar