On 31 July 2010 21:31, Rémi Forax <fo...@univ-mlv.fr> wrote: > Le 30/07/2010 21:59, Mandy Chung a écrit : >> >> Osvaldo Doederlein wrote: >>> >>> I wonder if these numbers have some variation per platform? >> >> Yes, there are some platform-dependent classes and so some loaded >> classes are different on different platform. >> >>> For me (on >>> Windows; 32-bit JDKs), the results of this test (java -verbose:class | >>> grep Loaded | wc -l) are: >>> >>> 1.5.0_22: 239 >>> 1.6.0_21: 274 >>> 1.7.0-ea-b103: 403 >>> >> I ran the helloworld. The number of loaded classes running different jdk >> versions are fairly close. What test case did you use? >> >> $ grep Loaded hw.verbose.jdk5u22 | wc -l >> 303 >> >> $ grep Loaded hw.verbose.jdk6u21 | wc -l >> 323 >> >> $ grep Loaded hw.verbose.jdk7 | wc -l >> 329 > > There is a big diff (at least on linux) if you just try to print the help of > the VM, > i.e pass no argument. > > jdk1.6.0_21: 274 classes > jdk1.7.0b103: 364 classes > > I join the diff. > > Some classes of java.text.*, java.util.ResourceBundle* and > some classes related to locale and currency are loaded eagerly. > > Rémi > >> >> >>> The diff from 1.5 to 1.6 is not bad, but JDK7 seems right now to be a >>> heavy regression... FWIW for such a simple test. For one thing, these >>> core-boot classes all come off the CDS file so their classloading >>> effort is relatively very small, and the delta will certainly be much >>> smaller for even the smallest real-world app. >> >> Right. -verbose:class prints out all loaded classes regardless of coming >> from CDS archive or not. The number of loaded classes is one >> metric to the startup while class loading time + clinit time are other >> important metrics. So these loaded classes has small impact >> to the startup time especially with CDS is enabled. >> >> Mandy >> >>> A+ >>> Osvaldo >>> >>> 2010/7/30 Mandy Chung <mandy.ch...@oracle.com>: >>>> >>>> Yongqiang Yang wrote: >>>>> >>>>> hi, >>>>> >>>>> I just type command "java" under openjdk1.6, then the jvm will load >>>>> 308 classes, including java/launcher/LauncherHelp, >>>>> java/util/ResourceBundle, >>>>> java/util/Currency, >>>>> java/util/Locale, >>>>> java/net/URL >>>>> >>>>> When I use jdk1.5, the jvm just load about 180 classes, not >>>>> including the classes above. >>>>> >>>>> Could someone figure out something wrong? >>>> >>>> New features and bug fixes in a new release could lead to more classes >>>> get >>>> loaded at startup. We have done some work to lazily load classes if >>>> appropriate (see CR 6798873: Reduce the number of classes loaded and >>>> class >>>> dependencies). >>>> >>>> Mandy >>>> >>>> >> > >
Is the jdk7 here an OpenJDK build or an Oracle-provided binary? There's likely to be a difference between the two, due to the replacement of proprietary classes (e.g. Pisces renderer, lcms & freetype code in OpenJDK which isn't used by the proprietary version). -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8