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