RFR (JAXP): 8146961: Fix PermGen memory leaks caused by static final Exceptions

Peter Levart peter.levart at gmail.com
Thu Aug 18 08:08:20 UTC 2016


Hi Aleks,

Looks OK, but if AbortException is never inspected for a stack trace, 
then it could be constructed without it. This is perhaps unnecessary if 
it is not on the hot path, but it is easy to just call the appropriate 
super constructor:

public class AbortException extends RuntimeException {

         private static final long serialVersionUID = 2608302175475740417L;

         /**
          * Constructor AbortException
          */
         public AbortException() { super(null, null, false, false); }
}


Regards, Peter

On 08/17/2016 04:04 PM, Aleks Efimov wrote:
> Hi Joe, Aleksey,
> Thank you for reviewing the initial fix.
>
> I followed the Joe's suggestion (thanks for that) and removed static 
> 'abort' field completely, the functionality was replaced by throwing 
> the exception of newly added type - AbortException. The new webrev 
> with removed 'abort' can be found here:
> http://cr.openjdk.java.net/~aefimov/8146961/9/01
>
> The Tomcat reproducer attached to the bug report fails without the fix 
> and passes with the new version of the fix.
> The JPRT and JCK testing again shows no related jaxp tests failures.
>
> Best Regards,
> Aleksej
>
>
> On 15/08/16 21:09, Joe Wang wrote:
>> Hi Aleksej,
>>
>> I suggest we get rid of the static abort. If RuntimeException 
>> happens, check where it happens. The first use case looks suspicious 
>> as it just returns if it's an instance of RE. For the 2nd case in DOM 
>> error report, let's throw a RuntimeException with the specified error 
>> message if error happens, and there's no handler or the handler 
>> failed to handle it. (would be better than an empty RE)
>>
>> Best,
>> Joe
>>
>> On 8/15/16, 10:38 AM, Aleks Efimov wrote:
>>> Hi,
>>>
>>> Please, help to review the fix for memory leak [1] in 
>>> com.sun.org.apache.xerces.internal.dom.DOMNormalizer that is caused 
>>> by usage of static final exceptions.
>>> This problem was already fixed in Apache Xerces project [2] and I 
>>> would like to backport it to JDK9 Xerces implementation.
>>> Webrev with the changes:
>>> http://cr.openjdk.java.net/~aefimov/8146961/9/00
>>>
>>> The Tomcat reproducer attached to the bug report fails without the 
>>> fix and passes with the fix.
>>> The JPRT and JCK testing shows no jaxp tests failures with the 
>>> proposed fix.
>>>
>>> With Best Regards,
>>> Aleksej
>>>
>>> [1] https://bugs.openjdk.java.net/browse/JDK-8146961
>>> [2] https://issues.apache.org/jira/browse/XERCESJ-1667
>>>
>



More information about the core-libs-dev mailing list