Laurent Claisse created SUREFIRE-1147:
-----------------------------------------

             Summary: Huge memory leak noticeable when running MANY tests
                 Key: SUREFIRE-1147
                 URL: https://jira.codehaus.org/browse/SUREFIRE-1147
             Project: Maven Surefire
          Issue Type: Bug
          Components: Maven Surefire Plugin
    Affects Versions: 2.18.1
         Environment: win7, jdk 8u25, mvn 3.2.5

            Reporter: Laurent Claisse
         Attachments: surefire-allocation-traces.png, surefire-leak2.png, 
surefire-leak3.png, surefire-leak.png

I'm writing concurrency tests, checking that this thing is reproducible, that 
other thing isn't, and so on. So i repeat tests MANY times like 100_000 (to 
reproduce the leak, the test project is here: 
https://github.com/vandekeiser/parallel-stream-fork-join-pool)

I see in VisualVM that the culprit is WrappedReportEntry, which indirectly 
holds references to lots of byte[] and char[] (allocation traces and heap dump 
pics are included in attachment)

I forked and patched maven-surefire-common, and that makes the leak go. I had 
to replace WrappedReportEntry.original by a singleton fake ReportEntry. 
Bebefore that i had replaced 
Utf8RecodingDeferredFileOutputStream.deferredFileOutputStream by a 
NullOutputStream and the leak was lesser but still here.

My fork of maven-surefire-common is there: 
https://github.com/vandekeiser/maven-surefire/tree/master/maven-surefire-common.
It IS a patch so i checked the patch checkbox in the issue reporter, but it is 
NOT intended to be distributed of course since it is very brutal and basic.

Also in my test project i explicitly deactivated reporting, but that doesn't 
make the reporting leak go away at all:
<disableXmlReport>true</disableXmlReport>
<printSummary>false</printSummary>



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to