Review Request (S) 8005994: Method annotations are allocated unnecessarily during class file parsing
stefan.karlsson at oracle.com
Tue Jan 15 09:42:01 PST 2013
On 15 jan 2013, at 16:30, Coleen Phillimore <coleen.phillimore at oracle.com> wrote:
> Stefan, This change looks good.
> How much footprint does this save?
For every class without annotations we save four arrays of size:
sizeof(Array<AnnotationArray*>) + (num_methods - 1) * sizeof(AnnotationArray*)
and we don't have to allocate the two Annotation objects and save:
2 * sizeof(Annotations)
Do you want some real numbers from a benchmark?
> On 01/15/2013 10:09 AM, Stefan Karlsson wrote:
>> On 01/15/2013 02:38 PM, Vitaly Davidovich wrote:
>>> Looks good Stefan.
>> Thanks, Vitaly.
>>> The annotation creation code in classFileParser is really asking for a macro or helper function that does the checks and construction.
>> I agree. Does anyone in the runtime team have any opinions on this?
> Yes, I do. The method annotations (and class ones too but not so much) are a problem for cleaning up metadata on class file parsing failure. I am working on adding these to the inlined tables in ConstMethod, which is another messy area.
>>> Sent from my phone
>>> On Jan 15, 2013 7:27 AM, "Stefan Karlsson" <stefan.karlsson at oracle.com> wrote:
>>> HotSpot unnecessarily allocates annotations arrays when they are not needed. This memory regression was introduced when the annotation data structures were changed in the Permgen Removal project.
>>> This fix:
>>> 1) reintroduces the old null checks
>>> 2) adds a null check before creating the newly introduced method type annotations.
>>> 3) adds a missing null check where the type annotations are used, since they now can be null.
>>> jprt, jdk_lang and type annotations tests
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the hotspot-runtime-dev