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