RFR: 8213445: jcmd VM.symboltable and VM.stringtable -verbose output contains no shared symbols or strings

Calvin Cheung ccheung at openjdk.java.net
Wed Apr 13 22:14:41 UTC 2022


Please review this change which will include shared symbols and strings when using the commands `jcmd VMsymboltable -verbose` and `jcmd VM.stringtable -verbose`, respectively.

This change also prints the shared symbol and shared string tables statistics if the `-verbose` option is not specified.

An example output of shared symbols:


48084:
VERSION: 1.1
25 2: [Ljava/util/jar/Manifest;
13 65535: jdk/jfr/Event
26 2: [Ljava/lang/AutoCloseable;
5 1: 'app'
10 1: 'platform'
24 65535: jdk/internal/event/Event
---------------
Shared symbols:
---------------
0 65535:
10 65535: toIndex =
3 65535: sbc
14 65535: package.access
...
---------------
Dynamic shared symbols:
---------------
19 65535: findResourceInPatch
71 65535: (Ljava/util/List<Ljdk/internal/module/ModulePatcher$ResourceFinder;>;)V
8 65535: overflow
49 65535: sun/net/www/protocol/jrt/JavaRuntimeURLConnection
24 65535: com/sun/tools/javac/Main
29 65535: com/sun/tools/javac/main/Main


Note that the `Dynamic shared symbols` section only shows up if the `jcmd` is used on a running process which is using a dynamic archive.

An example output of symbol table statistics:


48494:
SymbolTable statistics:
Number of buckets       :     32768 =    262144 bytes, each 8
Number of entries       :         6 =        96 bytes, each 16
Number of literals      :         6 =       152 bytes, avg  25.000
Total footprint         :           =    262392 bytes
Average bucket size     :     0.000
Variance of bucket size :     0.000
Std. dev. of bucket size:     0.014
Maximum bucket size     :         1
Shared Symbol Table statistics:
Number of buckets       :     10332
Number of entries       :     39893
Maximum bucket size     :        13
Dynamic Shared Symbol Table statistics:
Number of buckets       :        51
Number of entries       :        42
Maximum bucket size     :         3


Note that the `Dynamic Shared Symbol Table statistics` section only shows up if the `jcmd` is used on a running process which is using a dynamic archive.

Passed CI tiers 1 and 2 testing.

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

Commit messages:
 - 8213445: jcmd VM.symboltable and VM.stringtable -verbose output contains no shared symbols or strings

Changes: https://git.openjdk.java.net/jdk/pull/8234/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8234&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8213445
  Stats: 252 lines in 9 files changed: 207 ins; 22 del; 23 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8234.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8234/head:pull/8234

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


More information about the hotspot-runtime-dev mailing list