You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Kristian Rosenvold (JIRA)" <ji...@codehaus.org> on 2012/08/21 10:53:21 UTC

[jira] (MNG-5205) Memory leak in StringSearchModelInterpolator

    [ https://jira.codehaus.org/browse/MNG-5205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=306624#comment-306624 ] 

Kristian Rosenvold commented on MNG-5205:
-----------------------------------------

The code in question is an extreme hotspot in maven, but the caching in question could probably be made a lot smarter (and more technically correct to avoid the leak).

There is a duplication in the codebase, this class exists both a deprecated and a non-deprecated version.

At a minimum, it seems like it'd make sense to cache class->field mapping at the level isQualifiedForInterpolation(field, method), simply because it would speed things up quite noticeably. I'm studying the overall context of this algorithm to see if there's any higher-level simplifications to be made.


                
> Memory leak in StringSearchModelInterpolator
> --------------------------------------------
>
>                 Key: MNG-5205
>                 URL: https://jira.codehaus.org/browse/MNG-5205
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Inheritance and Interpolation
>    Affects Versions: 3.0.3
>            Reporter: Jesse Glick
>            Priority: Minor
>             Fix For: 3.0.5
>
>         Attachments: x.diff
>
>
> {{StringSearchModelInterpolator}} abuses {{WeakHashMap}}; the {{Field}} values of {{fieldsByClass}} hold hard references to the {{Class}} keys, making it useless. Thus if you passed any {{Class}} to it, that class and its {{ClassLoader}} and the transitive static graph therefrom would never be collectible.
> Anyway a cache is unnecessary, since {{Class}} does its own caching of fields!
> Also removing the ill-conceived {{fieldIsPrimitiveByClass}} - not a memory leak, but likely unnecessary complication.
> The class is deprecated anyway, but just in case it is used by someone it should be fixed.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira