[ 
https://issues.apache.org/jira/browse/SUREFIRE-1147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15786429#comment-15786429
 ] 

Tibor Digana commented on SUREFIRE-1147:
----------------------------------------

[~chtimi59]
We can optimize buffering in `Utf8RecodingDeferredFileOutputStream`. Currently 
the buffer size is 1MB. If you suppose the methods and classes are running in 
parallel, the size of all buffers can extremely grow to huge memory use.
What about to divide the buffer size by number of parallel threads/forks? The 
minimum size would be 1KB and max 128MB.

> Unbounded memory usage when running MANY tests
> ----------------------------------------------
>
>                 Key: SUREFIRE-1147
>                 URL: https://issues.apache.org/jira/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
>            Assignee: Tibor Digana
>             Fix For: Backlog
>
>         Attachments: surefire-allocation-traces.png, surefire-leak.png, 
> surefire-leak2.png, surefire-leak3.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.3.4#6332)

Reply via email to