On Fri, 2005-06-17 at 13:19 -0700, Keith Seitz wrote: > > - Could java.util.WeakHashMap be used instead of writing your own? > > See java.lang.VMString.intern() for an example. > > Yeah, that's a good question. Originally, I wrote this thing using a > Hashtable and SoftReferences, and the tables contained different > mappings of various things.
One minor snafu -- maybe someone sees a way around this. In order to facilitate the two types of needed lookups, we keep around the two tables I mentioned: oidTable maps from Object (ReferenceKey) to ObjectId idTable maps from Long (numerical ID) to ObjectId iodTable is used by the back-end and the VM parts to query IDs for Objects to be passed to the debugger. idTable is for looking up objects from commands sent by the debugger. Whatever the table type (Hashtable or WeakHashMap), I would need to keep a ReferenceQueue of the garbage collected Objects in order to clear the IDs from garbage collected Objects from idTable. Unfortunately, with the WeakHashMap, there is no way to get the keys put into a ReferenceQueue (that I can see at least). Consequently, I'll never know when to clean up the idTable unless I iterate over the table, asking each ID whether its object is still valid. So if I am to continue to use two tables for lookups, I need a little more control over the garbage collection of keys than WeakHashMap affords me, I think. Perhaps there is a better way to implement IdManager? Shall I post that so that people can see where these pieces fall into place? Keith _______________________________________________ Classpath-patches mailing list Classpath-patches@gnu.org http://lists.gnu.org/mailman/listinfo/classpath-patches