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