G1 garbage collection Ext Root Scanning time increases due to Class.forName (Problem, Solution, and Patch)

Ioi Lam ioi.lam at oracle.com
Fri Jul 12 12:37:52 PDT 2013


> |BTW, I am not sure why we need a DictionaryEntry::_pd_set that could 
> be appended. As far as I can see, there's only a single place that 
> calls |||DictionaryEntry::add_protection_domain. I.e., when the class 
> is loaded
>
> |    #0  DictionaryEntry::add_protection_domain ()
>     #1  Dictionary::add_protection_domain ()
>     #2  SystemDictionary::validate_protection_domain ()
>     #3  SystemDictionary::resolve_instance_class_or_null ()
> |
> |Did I miss something, or is this a vestigial artifact?|
|
||Sorry, I replied too quickly ....||

Here's an example case where you have multiple entries in the 
||DictionaryEntry::_pd_set:||
||
||* You have A.jar and B.jar in your classpath, each with a different 
signer||

||* A.jar has class C1 an||d B.jar has class C2, both of them are direct 
subclasses of
   java.lang.Object||

||* When C1||and C2 are resolved, a single ||DictionaryEntry is created:
     {klass=java.lang.Object, loader=sun/misc/Launcher$AppClassLoader}

* This entry has two protection domains (one for A.jar and one for B.jar)

- Ioi
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130712/191c5cd2/attachment.html 


More information about the hotspot-runtime-dev mailing list