On 6/10/2016 9:19 AM, Mandy Chung wrote:

On Oct 5, 2016, at 4:02 PM, David Holmes <david.hol...@oracle.com> wrote:

On 6/10/2016 8:55 AM, Mandy Chung wrote:


Note that PD is the protection domain of an initiating class that resolves a 
target type T.  PD is kept in T’s class loader L.  It’s not the protection 
domains of the classes defined by L.  VM keeps its own cache of protection 
domains that have been validated with a resolved type.  VM does not depend on 
ClassLoader::domains field to keep it alive.  IIUC, it’s kept as a weak 
reference in VM which is what we want here.

Okay but this will still affect the lifecycle of the PDs because without the 
strong reference in L, those weak references in the VM will quickly be cleared. 
I'm unclear what the implications of this might be, but I doubt regular 
short-lived tests would expose any issues.

There is no issue there.

PD will be GC’ed together when the classes along with its class loader are 
unloaded. These class loaders may be one or more and they are L1, L2 …. != L.

Okay, thanks for walking me through this.

David

Mandy

Reply via email to