jvm load too many classes

Mandy Chung mandy.chung at oracle.com
Fri Jul 30 19:59:45 UTC 2010


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


> 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.chung at 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
>>
>>
>>     




More information about the core-libs-dev mailing list