jvm load too many classes
Yongqiang Yang
xiaoqiangnk at gmail.com
Sat Jul 31 05:48:20 UTC 2010
I am porting openjdk1.6 to MIPS. I have finished, but opendk1.6 is four
times slower than jdk1.5 at startup. Two versions ran on the same MIPS
machine .
During startup, openjdk1.6 runs 1,650,000 bytecodes while jdk1.5 runs about
240,000 bytecodes.
On Sat, Jul 31, 2010 at 3:59 AM, Mandy Chung <mandy.chung at oracle.com> wrote:
> 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
>>>
>>>
>>>
>>>
>>
>
--
Best Wishes
Yongqiang Yang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20100731/05a48c52/attachment.html>
More information about the core-libs-dev
mailing list