MetaSpace and StackMapTable
john.bergin at gmail.com
Tue Jun 16 19:27:54 UTC 2020
Many thanks, Harold. Appreciate the extra detail on JVMTI
On Thu, 11 Jun 2020 at 20:38, Harold Seigel <harold.seigel at oracle.com>
> Hi John,
> Thank you for your inquiry.
> The JVM does not free the StackMapTable Metaspace memory after
> verification because the StackMapTable information is needed by the
> JVMTI RetransformClasses support.
> Also, it is not possible to have just one StackMapTable entry per
> method. Each stackmap table entry represents the verification type of
> the expected stack and local variables at particular spots in a method's
> bytecode, such as at the beginning of a basic block. Since the expected
> stack and local variables differ throughout the method, different
> entries are needed. For more information about how stack maps are used,
> Thanks, Harold
> On 6/10/2020 10:35 PM, David Holmes wrote:
> > Hi John,
> > Re-directing to hotspot-runtime-dev. Please drop the discuss mailing
> > list in replies.
> > Thanks,
> > David
> > On 11/06/2020 6:03 am, john bergin wrote:
> >> Hi all.
> >> I'm generating a bunch of classes at run-time with ASM (which
> >> automatically
> >> generates StackMapTable attributes) and when all the classes are
> >> loaded the *MethodAll
> >> *(bytecodes, StackMapTable, ...) column from *jmap -clstats *tells me
> >> that
> >> all classes account for about 100MB. When I generate the same classes
> >> with
> >> ASM but tell it *not* to compute the StackMapTable attributes and I
> >> switch
> >> class verification off (-noverify) *MethodAll* reduces to 55MB.
> >> I'm interested to know:
> >> - does the JVM free memory held in MetaSpace by StackMapTable
> >> attributes
> >> after class verification and a full GC? My testing shows it doesn't.
> >> - is it possible to generate one StackMapTable entry for each
> >> method that
> >> would satisfy the verifier? I had a quick look at the code and it
> >> doesn't
> >> seem possible *ClassVerifier::verify_stackmap_table *
> >> Thanks,
> >> John.
More information about the hotspot-runtime-dev