We are using OJB - 1.0.3 (PB API) in one of our application which is very
much database intensive. When we put the application under load testing, the
memory kept on growing and at one stage, the application became very slow as
there was hardly any memory left on the machine. We were forced to re-start
the app server.

On putting the application under a profiler, we observed that, the
"ReferenceMap$Entry" kept on growing in size. Also we saw some of our
application specific objects in memory as it was not released to the garbage
collector. We changed the "AnonymousPersistentField.java", to wrap the value
as a weak reference. The code snippet is given below:

protected void putToFieldCache(Object key, Object value)
{
...
fkCache.put(key, new WeakReference(value));
...
}
Similarly the "getFromFieldCache" is changed to un-wrap the value.
Ideally the memory should come down to the original value after each
transaction.

After doing these changes, we found NO references to our application
specific objects in the memory but still "ReferenceMap$Entry" kept growing
in size.

Let me know if the fix is a correct one and how to clear of
"ReferenceMap$Entry".

We are using "org.apache.ojb.broker.cache.ObjectCachePerBrokerImpl" as the
caching implemetation and the broker is closed at the end of the
transaction.

Thanks,
Sriki



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to