On Tue, 23 Mar 2021 13:35:05 GMT, Koichi Sakata <ksak...@openjdk.org> wrote:

>> When a heap is used more than about 2.1GB, clhsdb jhisto shows a negative 
>> number in the total field.
>> 
>> $ java -Xmx20g Sample
>> 
>> $ jhsdb clhsdb --pid 5773
>> Attaching to process 5773, please wait...
>> hsdb> jhisto
>> ...
>> 299:            1       16      jdk.internal.misc.Unsafe
>> 300:            3402    10737610256     byte[]
>> Total :         15823   -2146661280
>> Heap traversal took 1.793 seconds.
>> (Incidentally, the Sample is a program that only allocates many objects.)
>> 
>> #### Details
>> This is because in ObjectHistogram class the totalSize variable is int type.
>> 
>> The total size is the total of ObjectHistogramElement#getSize() and 
>> getSize() returns long. So I changed int to long in the ObjectHistogram 
>> class.
>> 
>> Additionally, I changed the type of the totalCount. This doesn't cause a 
>> bug, but ObjectHistogramElement#getCount() also returns long. So it doesn't 
>> need to treat it as int, I think. ObjectHistogramElement#compare() also do 
>> the same thing, so a class that is a huge size show the bottom of the list.
>> 
>> #### Tests
>> The jtreg test was successful.
>> $ sudo make run-test TEST=serviceability/sa/ClhsdbJhisto.java
>> 
>> $ cat 
>> build/linux-x86_64-server-fastdebug/test-results/jtreg_test_hotspot_jtreg_serviceability_sa_ClhsdbJhisto_java/text/summary.txt
>> serviceability/sa/ClhsdbJhisto.java  Passed. Execution successful
>> 
>> I confirmed the output with the same program.
>> 
>> $ ./jdk/build/linux-x86_64-server-fastdebug/jdk/bin/java -Xmx20g Sample
>> $ ./jdk/build/linux-x86_64-server-fastdebug/jdk/bin/jhsdb clhsdb --pid 10196
>> Attaching to process 10196, please wait...
>> hsdb> jhisto
>> Object Histogram:
>> 
>> num       #instances    #bytes  Class description
>> --------------------------------------------------------------------------
>> 1:              3405    13958838400     byte[]
>> 2:              887     109032  java.lang.Class
>> ...
>> 300:            1       16      jdk.internal.misc.Unsafe
>> Total :         15827   13959470288
>> Heap traversal took 1.72 seconds.
>
> Koichi Sakata has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Fix the sort bug for huge bytes in jhisto

The copyright needs updating in ObjectHistogramElement.java. Otherwise the 
changes look good.

-------------

Marked as reviewed by cjplummer (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/3087

Reply via email to