> On May 27, 2015, at 12:34 AM, Peter Levart <peter.lev...@gmail.com> wrote:
> 
> Hi Dmitry,
> 
> The jdk part looks OK (no great changes on this side from last webrev). Is 
> there a particular reason why the return type of printFinalizayionQueue() 
> method is Object[] and not Map.Entry<String, int[]>[] ?
> 

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[]?

> For the hotspot part, I have a few reservations. You expect that the type of 
> array elements will be HashMap.Node and that the key/value fields will be at 
> fixed offsets. Is this even true for all architectures (32bit, 64bit 
> +-UseCompressedOops)?
> 
> The type of HashMap entry is controlled by code in HashMap which has a long 
> history of changes. Next time the implementation of HashMap changes, your 
> code could break. Would it be possible to only use public API? To invoke 
> methods on Map.Entry interface to obtain the key and value?
> 

Indeed, depending on the HashMap internal implementation is a bad idea.

Mandy

> Regards, Peter
> 
> On 05/26/2015 04:16 PM, Dmitry Samersoff wrote:
>> Hi Everybody,
>> 
>> http://cr.openjdk.java.net/~dsamersoff/JDK-8059036/webrev.09/
>> 
>> Please review updated webrev -
>> 
>> printFinalizationQueue now returns and array of Map.Entry<String, int[])
>> and all formatting is done on VM side.
>> 
>> -Dmitry
>> 
>> On 2015-05-21 02:07, Mandy Chung wrote:
>>>> On May 19, 2015, at 11:51 PM, Dmitry Samersoff
>>>> <dmitry.samers...@oracle.com <mailto:dmitry.samers...@oracle.com>> wrote:
>>>> 
>>>> Other alternatives could be to do all hashing/sorting/printing on native
>>>> layer i.e. implement printFinalizationQueue inside VM.
>>>> 
>>>> Both options has pros and cons - Java based solution requires less JNI
>>>> calls and better readable but takes more memory.
>>>> 
>>>> It might be better to return an array of Map.Entry<String, int[]>
>>>> objects to VM rather than one huge string.
>>> The output and formatting should be done by jcmd.  What you really need
>>> to get a peek on the finalizer queue and print the histogram.   The VM
>>> has the heap histogram implementation.  Have you considered leveraging
>>> that?
>>> 
>>>    5:          1012          40480  java.lang.ref.Finalizer
>>> 
>>> You can find the registered Finalizer instances.  The downside is that
>>> icmd -finalizerinfo stops the world.  I think it’s not unreasonable for
>>> this diagnostic command to be expensive like -heap command.
>>> 
>>> Mandy
>> 
> 

Reply via email to