DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=30162>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30162 [PATCH] Avoid potential memory leaks from IntrospectionHelper.helpers Summary: [PATCH] Avoid potential memory leaks from IntrospectionHelper.helpers Product: Ant Version: 1.6.1 Platform: All OS/Version: All Status: NEW Severity: Normal Priority: Other Component: Core AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] IntrospectionHelper keeps a cache of helpers it has made for particular Class's. This cache is cleared (presumably to avoid leaking memory) when the build finishes - *if* callers have used the factory method IH.getHelper(Project,Class) rather than the IH.gH(Class) variant. Unfortunately, if you call only IH.gH(Class) then the Class references are not released, even by a build finish event. This appears to have caused a massive memory leak in the JVM permanent generation (where classes are held) in the NetBeans IDE. (Workaround: forcibly clear the cache via reflection.) More: http://www.netbeans.org/issues/show_bug.cgi?id=43113 Better would be to use a WeakHashMap, since there is no reason to keep a cache entry if the Class key is referenced only from that entry; it could not possibly be used. Generally, please be very suspicious of any static fields, especially maps, and use weak references wherever appropriate. Attaching a patch which makes the cache weak on the key, and also uses the 2-arg variant of getHelper wherever it seems it would be possible. (There are some places where there is no Project context and it is not possible.) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]