On Jul 20, 2007, at 11:19, Jeremias Maerki wrote:


The initial profile shows that instances of WeakHashMap$entry and
org.apache.fop.fo.properties.FixedLength continually grow with the life
of JVM.

Interesting coincidence:
That's exactly what Andreas already wrote about in the other thread
about the property cache: The values of the WeakHashMap must not
reference objects (or be the same objects) as used in the keys. See
javadoc:

Interesting interpretation, but that's not what the Javadoc says, if I interpret correctly: While "care should be taken to ensure that value objects do not strongly refer to their own keys", there seems to be nothing against the values being the same objects as the keys. Identity implies no reference.

As long as the value-objects do not contain a member that points to the key, we should be safe.

In addition to that there was a bug in FixedLength.equals() that made
the caching effect-less:
http://svn.apache.org/viewvc?view=rev&rev=557934

That was the most likely cause. The equals() method returning false because of this, would keep on creating separate instances. How they would be leaked into a subsequent run is not quite clear to me, though...


Cheers

Andreas

Reply via email to