RFR: 8275775: Add jcmd VM.classes to print details of all classes [v2]

Yi Yang yyang at openjdk.java.net
Tue Jan 18 02:50:06 UTC 2022


> Add VM.classes to print details of all classes, output looks like:
> 
> 1. jcmd VM.classes
> 
> KlassAddr Size State Flags LoaderName ClassName
> 0x0000000800c0b400 62 inited W bootstrap java.lang.invoke.LambdaForm$MH/0x0000000800c0b400
> 0x0000000800c0b000 62 inited W bootstrap java.lang.invoke.LambdaForm$DMH/0x0000000800c0b000
> 0x0000000800c0ac00 62 inited W bootstrap java.lang.invoke.LambdaForm$MH/0x0000000800c0ac00
> ...
> 
> 2. jcmd VM.classes verbose
> 
> KlassAddr Size State Flags LoaderName ClassName
> 0x0000000800c0b400 62 inited W bootstrap java.lang.invoke.LambdaForm$MH/0x0000000800c0b400
> java.lang.invoke.LambdaForm$MH/0x0000000800c0b400 {0x0000000800c0b400}
>  - instance size: 2
>  - klass size: 62
>  - access: final synchronized
>  - state: inited
>  - name: 'java/lang/invoke/LambdaForm$MH+0x0000000800c0b400'
>  - super: 'java/lang/Object'
>  - sub:
>  - arrays: NULL
>  - methods: Array<T>(0x00007f620841f210)
>  - method ordering: Array<T>(0x0000000800a7e5a8)
>  - default_methods: Array<T>(0x0000000000000000)
>  - local interfaces: Array<T>(0x00000008005af748)
>  - trans. interfaces: Array<T>(0x00000008005af748)
>  - constants: constant pool [41] {0x00007f620841f030} for 'java/lang/invoke/LambdaForm$MH+0x0000000800c0b400' cache=0x00007f620841f380
>  - class loader data: loader data: 0x00007f61c804a690 of 'bootstrap' has a class holder
>  - source file: 'LambdaForm$MH'
>  - class annotations: Array<T>(0x0000000000000000)
>  - class type annotations: Array<T>(0x0000000000000000)
>  - field annotations: Array<T>(0x0000000000000000)
>  - field type annotations: Array<T>(0x0000000000000000)
>  - inner classes: Array<T>(0x00000008005af6d8)
>  - nest members: Array<T>(0x00000008005af6d8)
>  - permitted subclasses: Array<T>(0x00000008005af6d8)
>  - java mirror: a 'java/lang/Class'{0x000000011f4b3968} = 'java/lang/invoke/LambdaForm$MH+0x0000000800c0b400'
>  - vtable length 5 (start addr: 0x0000000800c0b5b8)
>  - itable length 2 (start addr: 0x0000000800c0b5e0)
>  - ---- static fields (1 words):
>  - static final '_D_0' 'Ljava/lang/invoke/LambdaForm;' @112
>  - ---- non-static fields (0 words):
>  - non-static oop maps:
> 0x0000000800c0b000 62 inited W bootstrap java.lang.invoke.LambdaForm$DMH/0x0000000800c0b000
> java.lang.invoke.LambdaForm$DMH/0x0000000800c0b000 {0x0000000800c0b000}
>  - instance size: 2
>  - klass size: 62
>  - access: final synchronized
>  - state: inited
>  - name: 'java/lang/invoke/LambdaForm$DMH+0x0000000800c0b000'
>  - super: 'java/lang/Object'
>  - sub:
>  - arrays: NULL
>  - methods: Array<T>(0x00007f620841ea68)
>  - method ordering: Array<T>(0x0000000800a7e5a8)
>  - default_methods: Array<T>(0x0000000000000000)
>  - local interfaces: Array<T>(0x00000008005af748)
>  - trans. interfaces: Array<T>(0x00000008005af748)
>  - constants: constant pool [49] {0x00007f620841e838} for 'java/lang/invoke/LambdaForm$DMH+0x0000000800c0b000' cache=0x00007f620841ebe0
>  - class loader data: loader data: 0x00007f61c804a750 of 'bootstrap' has a class holder
>  - source file: 'LambdaForm$DMH'
>  - class annotations: Array<T>(0x0000000000000000)
>  - class type annotations: Array<T>(0x0000000000000000)
>  - field annotations: Array<T>(0x0000000000000000)
>  - field type annotations: Array<T>(0x0000000000000000)
>  - inner classes: Array<T>(0x00000008005af6d8)
>  - nest members: Array<T>(0x00000008005af6d8)
>  - permitted subclasses: Array<T>(0x00000008005af6d8)
>  - java mirror: a 'java/lang/Class'{0x000000011f4b0968} = 'java/lang/invoke/LambdaForm$DMH+0x0000000800c0b000'
>  - vtable length 5 (start addr: 0x0000000800c0b1b8)
>  - itable length 2 (start addr: 0x0000000800c0b1e0)
>  - ---- static fields (1 words):
>  - static final '_D_0' 'Ljava/lang/invoke/LambdaForm;' @112
>  - ---- non-static fields (0 words):
> ...

Yi Yang has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision:

  8275775 Add VM.classes to print details of all classes

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/7105/files
  - new: https://git.openjdk.java.net/jdk/pull/7105/files/c26a62be..80a3d22b

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=7105&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=7105&range=00-01

  Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7105.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7105/head:pull/7105

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


More information about the hotspot-dev mailing list