You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Mark Struberg (JIRA)" <ji...@codehaus.org> on 2012/09/14 14:47:21 UTC

[jira] (MCOMPILER-133) Facing OutOfMemory as IsolatedClassloader (plexus-compiler jar) is not closed after JavacCompiler is done with compilation.

    [ https://jira.codehaus.org/browse/MCOMPILER-133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=308503#comment-308503 ] 

Mark Struberg commented on MCOMPILER-133:
-----------------------------------------

agree, setting to wont-fix
                
> Facing OutOfMemory as IsolatedClassloader (plexus-compiler jar) is not closed after JavacCompiler is done with compilation.
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MCOMPILER-133
>                 URL: https://jira.codehaus.org/browse/MCOMPILER-133
>             Project: Maven 2.x Compiler Plugin
>          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, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira