My bad,
I've calculated that the header was 8 bytes instead of 12, so I've supposed 
that the boolean was not stored in a byte.

For my culture, why the header is 12 bytes, the pointer to the vtable is on 
64bits and can not be compressed like the other oops ?

Rémi


On November 7, 2017 5:42:33 PM GMT+01:00, Brent Christian 
<brent.christ...@oracle.com> wrote:
>Hi, Remi
>
>Thanks for the idea.  From my reading of the jol ouput:
>
>http://cr.openjdk.java.net/~bchristi/8185925/StackFrameInfo.jol.rmDeclClass.txt
>
>
>
>I believe retainClassRef is already being stored in a single byte (i.e.
>
>SIZE of 1):
>
>  OFFSET  SIZE     TYPE DESCRIPTION
>...
>      10     1  boolean StackFrameInfo.retainClassRef
>
>Thanks,
>-Brent
>
>On 11/6/17 11:45 PM, Remi Forax wrote:
>> Hi Brent,
>> if you declare retainClassRef as a byte, you can even compress the
>data structure a little bit more, no ?
>> a boolean (as a field) uses 4 bytes while a byte uses welll 1 byte.
>> Given that bci is a short, the VM will put both bci and
>retainClassRef on the same 32 bits slot.
>> 
>> cheers,
>> Rémi
>> 
>> ----- Mail original -----
>>> De: "Brent Christian" <brent.christ...@oracle.com>
>>> À: "core-libs-dev" <core-libs-dev@openjdk.java.net>, "hotspot-dev"
><hotspot-...@openjdk.java.net>
>>> Envoyé: Mardi 7 Novembre 2017 01:23:16
>>> Objet: RFR: 8185925 & 8153682 (footprint reduction of
>java.lang.StackFrameInfo)
>> 
>>> Hi,
>>>
>>> There are a couple opportunities to reduce the memory footprint of
>>> java.lang.StackFrameInfo (the internal implementation of
>>> java.lang.StackWalker.StackFrame):
>>>
>>> 8153682[1] : StackFrameInfo.declaringClass could be removed
>>> 8185925[2] : StackFrameInfo::walker field can be replaced with
>bitmap to
>>> save footprint
>>>
>>> I had a look using jol[3].  Removing only 'walker' helps only under
>32-
>>> and 64-bit, but not with compressed oops.  Removing both 'walker'
>and
>>> 'declaringClass' brings a benefit to compressed oops as well (though
>not
>>> for 16-byte aligned).
>>>
>>> The size change, in bytes, for each execution mode is as follows:
>>>
>>>                               32-bit: 32->24
>>>                               64-bit: 56->40
>>>                   64/compressed oops: 32->24
>>> 64/compressed oops, 16-byte aligned: 32->32
>>>
>>> (For reference, the jol reports for the baseline and specimen are at
>[4]
>>> and [5], respectively.)
>>>
>>> Please review my code change for this.  The webrev is here:
>>> http://cr.openjdk.java.net/~bchristi/8185925/webrev.03/
>>>
>>> An automated test run is in progress.
>>>
>>> Thanks!
>>> -Brent
>>>
>>> --
>>> 1. https://bugs.openjdk.java.net/browse/JDK-8153682
>>> 2. https://bugs.openjdk.java.net/browse/JDK-8185925
>>> 3. http://openjdk.java.net/projects/code-tools/jol/
>>> 4.
>>>
>http://cr.openjdk.java.net/~bchristi/8185925/StackFrameInfo.jol.baseline.txt
>>> 5.
>>>
>http://cr.openjdk.java.net/~bchristi/8185925/StackFrameInfo.jol.rmDeclClass.txt

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reply via email to