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

Aleks Efimov aleksej.efimov at oracle.com
Thu Aug 18 10:05:58 UTC 2016


Hi Peter,

Thank you for review and suggestion to add super constructor call: will 
add it before pushing the changes.

Best Regards,

Aleksej


On 18/08/16 11:08, Peter Levart wrote:
> 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