[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-gc-dev
Subject:    Re: RFR(M, v9): JDK-8059036 : Implement Diagnostic Commands for heap and
From:       Staffan Larsen <staffan.larsen () oracle ! com>
Date:       2015-05-28 18:35:13
Message-ID: 2FB398BE-12CE-49AC-91F6-BC1C5B2F7F7A () oracle ! com
[Download RAW message or body]


> On 28 maj 2015, at 20:06, Mandy Chung <mandy.chung@oracle.com> wrote:
> 
> 
> On 05/28/2015 07:35 AM, Peter Levart wrote:
> > Hi Mandy,
> > 
> > On 05/27/2015 03:32 PM, Mandy Chung wrote:
> > > Taking it further - is it simpler to return String[] of all classnames \
> > > including the duplicated ones and have the VM do the count?  Are you concerned \
> > > with the size of the String[]?
> > 
> > Yes, the histogram is much smaller than the list of all instances. There can be \
> > millions of instances waiting in finalizer queue, but only a few distinct \
> > classes.
> 
> Do you happen to know what libraries are the major contributors to these millions \
> of finalizers? 
> It has been strongly recommended to avoid finalizers (see Effective Java Item 7).   \
> I'm not surprised that existing code is still using finalizers while we should \
> really encourage them to migrate away from it.

Having ways to introspect the finalizer queue is one way to make people aware that \
they have a problem :-)

> 
> > What could be done in Java to simplify things in native code but still not format \
> > the output is to convert the array of Map.Entry(s) into an Object[] array of \
> > alternating {String, int[], String, int[], .... } 
> > Would this simplify native code for the price of a little extra work in Java? The \
> > sizes of old and new arrays are not big (# of distinct classes of finalizable \
> > objects in the queue).
> 
> I also prefer writing in Java and writing less native code (much simplified).  It's \
> an interface that we have to agree upon and keep it simple.  Having the returned \
> Object[] as alternate String and int[] is a reasonable compromise. 
> ReferenceQueue.java - you can move @SuppressWarning from the method to just the \
> field variable "rn" @SuppressWarnings("unchecked")
> Reference<? extends T> rn = r.next;
> 
> Finalizer.java
> It's better to rename printFinalizationQueue as it inspects the finalizer reference \
> queue (maybe getFinalizerHistogram?).  Can you move this method to the end of this \
> class and add the comment saying that this is invoked by VM for jcmd -finalizerinfo \
> support and @return to describe the returned content.  I also think you can remove \
> @SuppressWarnings for this method. 
> Mandy


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic