You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by Ju...@empolis.com on 2008/10/20 15:44:57 UTC

Memory consumption of In-memory processes

Hello,

We have experienced a high memory consumption by ODE in scenarios where in-memory processes are invoked with a relatively high frequency. This is caused by the org.apache.ode.bpel.memdao.BpelDAOConnectionImpl which keeps the created instances of MessageExchangeDAOImpl in memory until they exceed the TIME_TO_LIVE (hardcoded constant). This way we have around 400 of these unneeded (at least for us ;-) objects hanging in memory occupying around 30 MB of memory all the time.

So, I would like to ask if this behavior can be changed such that these objects are released as soon as the invoker of the process calls the release() method of the MyRoleMessageExchange object. I've done a quick patch to test this and at least in my test cases it works without a problem. Is there a reason why these objects should be kept in memory after explicitly telling the engine that the data can be released?

I can produce a diff for this change (have to port it to the current trunk first). I'm not sure that I did it the right way, though, but I can try to improve it.

Yours,
Jürgen 
Committer for the Eclipse SMILA project
http://www.eclipse.org/smila

RE: Memory consumption of In-memory processes

Posted by Ju...@empolis.com.
 
> That would be perfect. I can comment on it if I see any problem and we
> can increment on that.

There it is: https://issues.apache.org/jira/browse/ODE-395

Thanks,
Juergen

Re: Memory consumption of In-memory processes

Posted by Matthieu Riou <ma...@offthelip.org>.
On Mon, Oct 20, 2008 at 6:44 AM, <Ju...@empolis.com> wrote:

> Hello,
>
> We have experienced a high memory consumption by ODE in scenarios where
> in-memory processes are invoked with a relatively high frequency. This is
> caused by the org.apache.ode.bpel.memdao.BpelDAOConnectionImpl which keeps
> the created instances of MessageExchangeDAOImpl in memory until they exceed
> the TIME_TO_LIVE (hardcoded constant). This way we have around 400 of these
> unneeded (at least for us ;-) objects hanging in memory occupying around 30
> MB of memory all the time.
>
> So, I would like to ask if this behavior can be changed such that these
> objects are released as soon as the invoker of the process calls the
> release() method of the MyRoleMessageExchange object. I've done a quick
> patch to test this and at least in my test cases it works without a problem.
> Is there a reason why these objects should be kept in memory after
> explicitly telling the engine that the data can be released?
>

They shouldn't, the release is meant to destroy them so if they stick
around, we have a bug :) The TIME_TO_LIVE is just there to make sure that we
won't plainly leak memory if release doesn't work properly.


>
> I can produce a diff for this change (have to port it to the current trunk
> first). I'm not sure that I did it the right way, though, but I can try to
> improve it.


That would be perfect. I can comment on it if I see any problem and we can
increment on that.

Thanks!
Matthieu


>
>
> Yours,
> Jürgen
> Committer for the Eclipse SMILA project
> http://www.eclipse.org/smila
>