You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Lukas Theussl (JIRA)" <ji...@codehaus.org> on 2010/09/08 13:12:32 UTC

[jira] Moved: (MNG-4801) Facing OutOfMemory as IsolatedClassloader (plexus-compiler jar) is not closed after JavacCompiler is done with compilation.

     [ http://jira.codehaus.org/browse/MNG-4801?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukas Theussl moved MAVEN-1867 to MNG-4801:
-------------------------------------------

           Complexity: Intermediate
          Component/s:     (was: core)
    Affects Version/s:     (was: 1.2)
                  Key: MNG-4801  (was: MAVEN-1867)
              Project: Maven 2 & 3  (was: Maven 1)

> Facing OutOfMemory as IsolatedClassloader (plexus-compiler jar) is not closed after JavacCompiler is done with compilation.
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-4801
>                 URL: http://jira.codehaus.org/browse/MNG-4801
>             Project: Maven 2 & 3
>          Issue Type: Bug
>         Environment: Windows 2003 Server
>            Reporter: kaniska
>            Priority: Blocker
>         Attachments: IsolatedClassLoader_Issue.docx
>
>
> In Eclipse environment for a maven-based project, Auto-build fires Maven-build which in turn executes CompilerMojo, finally creating an IsolatedClassloader for each compile call !
> IsolatedClassLoader.addURL(URL) line: 42...	
> JavacCompiler.compile(CompilerConfiguration) line: 141	
> CompilerMojo(AbstractCompilerMojo).execute() line: 493...
> DefaultBuildPluginManager.executeMojo(MavenSession, MojoExecution) line: 105...	
> MavenImpl.execute(MavenExecutionRequest, IProgressMonitor) ...
> MavenBuilder.build(int, Map, IProgressMonitor) line: 153	....
> AutoBuildJob.run(IProgressMonitor) line: 238
> So every single change in maven-v4 project creates a new IsolatedClassloader which is fine.
> But the problem is JavacCompiler is not closing the loader which holds huge number of jars (url points to maven-repo) in its url classpath.
> It should use ClassLoaderutil.releaseLoader(..) to unload the jars.
> GC does not reclaim the isolatedclassloader instances (not sure why).
> As a result, IsolatedClassloader instances consume retains the heap.
> Eventually maven-application goes OutOfMemory !
> Attached is the heapdump analysis of isolatedclassloader that holds the memory.
> This is kind of blocking us from building largescale maven app which requires good number of jars in development time for compiling the app source at development time.
> Please note that we face this issue at development time whenever developer making changes in source code as explained in the code-flow above.
> Please let us know if more information is required.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira