On 10/19/06, Markus M. May <[EMAIL PROTECTED]> wrote:
Hello,
this is going to be nearly the same as restructuring the build process, since
we have more then one component, using these targets. I am currently digging
deeper into this, and hope, that I can restructure the build tonight. This is
going to get a long night :-(
If you can recompile Ant, (1.6.5) there is a memory leakage associated
with <antcall> and <taskdef> that can be fixed easily.
In IntrospectionHelper.java, the method
public static synchronized IntrospectionHelper getHelper(Class c) {
IntrospectionHelper ih = (IntrospectionHelper) helpers.get(c);
if (ih == null) {
ih = new IntrospectionHelper(c);
helpers.put(c, ih);
}
return ih;
}
Change this to:
public static synchronized IntrospectionHelper getHelper(Class c) {
IntrospectionHelper ih = (IntrospectionHelper) helpers.get(c.getName());
if (ih == null || c != ih.bean) {
ih = new IntrospectionHelper(c);
helpers.put(c.getName(), ih);
}
return ih;
}
Recompile (./build.sh or build.bat in the source), copy
$ant_source/dist/lib/ant.jar
to $ANT_HOME/lib (*not* the other jar files as they need third party jars
to compile).
This change is in the svn version of ant, but was done after
the release of ant 1.7.0beta3.
peter
-------- Original-Nachricht --------
Datum: Thu, 19 Oct 2006 16:04:06 +0100
Von: "Peter Reilly" <[EMAIL PROTECTED]>
An: "Ant Users List" <user@ant.apache.org>
Betreff: Re: antcall / depends
> On 10/19/06, Markus M. May <[EMAIL PROTECTED]> wrote:
> > Hello,
> > I am currently facing a massive OutOfMemoryException problem. I know
> that this is, because we are using ANTCALL quite heavily.
> > We have e.g. the following structure:
> >
> > TargetA
> > depends on init (via depend)
> > calls TargetB and TargetC (via antcall)
> > TargetB
> > depends on init (via depend)
> > TargetC
> > depends on init (via depend)
> >
> > Therefor for each antcall we call the target init. Since there are
> taskdefs in the init-target, there is quite some memory leak. Is there some
way,
> to not call the depends, once they are called, another time?
>
> Make the target "init" have an unless attribute:
>
> <target name="init" unless="initialized">
> </target>
>
> <target name="A" depends="init">
> <antcall target="B">
> <param name="initialized" value="true"/>
> </antcall>
> <antcall target="C">
> <param name="initialized" value="true"/>
> </antcall>
> </target>
>
>
> Or, if antcall is called with inheritAll="true" (the default)
>
> <target name="init" unless="initialized">
> ...
> <property name="initialized" value="yes, I am"/>
> </target>
>
> <target name="A" depends="init">
> <antcall target="B"/>
> <antcall target="C"/>
> </target>
>
> <target name="B" depends="init">
> </target>
> <target name="C" depends="init">
> </target>
>
> Peter
>
>
> > I know, that we should restructure our build, but currently we are
> facing a timely issue, so this is not an option anyway :-(
> >
> > Any help is appreciated.
> >
> > R,
> >
> > Markus M. May
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]