RFR: Report fwdptr size in JNI GetObjectSize
Roman Kennke
rkennke at redhat.com
Mon Dec 11 17:14:41 UTC 2017
Am 11.12.2017 um 18:12 schrieb Aleksey Shipilev:
> http://cr.openjdk.java.net/~shade/shenandoah/objsize-fwdptr/webrev.01/
>
> To make cross-GC comparisons more convenient, it makes sense to let Shenandoah report JNI
> GetObjectSize added up with forwarding pointer. This seems innocuous, because it is specified to
> return implementation-specific value ("This size is an implementation-specific approximation of the
> amount of storage consumed by this object"), and it does not touch "actual" oopDesc::size() which is
> used everywhere else in critical VM code.
>
> Testing: hotspot_gc_shenandoah, eyeballing JOL output for different GCs
>
> # -XX:+UseParallelGC
>
> java.lang.String object internals:
> OFFSET SIZE TYPE DESCRIPTION VALUE
> 0 4 (object header) 05 00 00 00
> 4 4 (object header) 00 00 00 00
> 8 4 (object header) 18 16 00 00
> 12 4 byte[] String.value []
> 16 4 int String.hash 0
> 20 1 byte String.coder 0
> 21 3 (loss due to the next object alignment)
> Instance size: 24 bytes
> Space losses: 0 bytes internal + 3 bytes external = 3 bytes total
>
> # -XX:+UseShenandoahGC
>
> java.lang.String object internals:
> OFFSET SIZE TYPE DESCRIPTION VALUE
> 0 4 (object header) 05 00 00 00
> 4 4 (object header) 00 00 00 00
> 8 4 (object header) 18 16 00 00
> 12 4 byte[] String.value []
> 16 4 int String.hash 0
> 20 1 byte String.coder 0
> 21 11 (loss due to the next object alignment)
> Instance size: 32 bytes
> Space losses: 0 bytes internal + 11 bytes external = 11 bytes total
>
>
> Thanks,
> -Aleksey
>
Yes that sounds reasonable.
Roman
More information about the shenandoah-dev
mailing list