Hi Erik,

most probably you know already: class WeakHashMap from java.util does not help when implementing the map of flushed instances. The WeakHashMap uses a WeakReference for the key, but it strongly references the value which is the flushed instance in your case. You need a map implementation that maintains a strong reference to the key, but a weak reference to the value. Just in case you are interested: there is a tested implementation in the core20 module of the apache jdo repository. The class is called WeakValueHashMap and you find it under core20/src/java/org/apache/jdo/util.

Regards Michael
Thanks Craig,

I works now.

Quoting Craig L Russell <[EMAIL PROTECTED]>:

Hi Erik,

Generally, use weak references to persistent instances so they can be
garbage collected when the user no longer holds a strong reference to
them. Unflushed dirty instances need to be referenced strongly so
they are not garbage collected. So at flush time, move the flushed
dirty instances from a strong-reference map to a weak-reference map
(key = oid, value = weak-reference object).

Craig

On May 24, 2006, at 7:21 AM, Erik Bengtson wrote:

Hi,

In case of huge amount of objects loaded /persisted, the flush
method is for
this purpose. I wonder how the cache/state management can be
implemented
without breaking JDO contract and capable to handle load, any tips?

Thanks

Erik Bengtson
Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
P.S. A good JDO? O, Gasp!






--
Michael Bouschen                [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]        http://www.tech.spree.de/
Tel.:++49/30/235 520-33         Buelowstr. 66                   
Fax.:++49/30/2175 2012          D-10783 Berlin                  

Reply via email to