diff options
author | Philipp Haller <hallerp@gmail.com> | 2008-12-12 13:42:21 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2008-12-12 13:42:21 +0000 |
commit | 491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b (patch) | |
tree | 4ec7376b3e7d5802f7af57e76fe0da78f9fe410e | |
parent | eba7932b139aa400e4d7a0b25b1dc7d61404e283 (diff) | |
download | scala-491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b.tar.gz scala-491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b.tar.bz2 scala-491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b.zip |
Fix memory leak in ActorGC
-rw-r--r-- | src/actors/scala/actors/ActorGC.scala | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/actors/scala/actors/ActorGC.scala b/src/actors/scala/actors/ActorGC.scala index d6561c331b..d644dd51a7 100644 --- a/src/actors/scala/actors/ActorGC.scala +++ b/src/actors/scala/actors/ActorGC.scala @@ -11,6 +11,7 @@ package scala.actors import java.lang.ref.{WeakReference, ReferenceQueue} +import java.util.WeakHashMap import scala.collection.mutable.HashMap @@ -20,13 +21,11 @@ object ActorGC { private val termHandlers = new HashMap[Actor, () => Unit] private val refQ = new ReferenceQueue[Actor] - private var storedRefs: List[WeakReference[Actor]] = List() + private val refMap = new WeakHashMap[WeakReference[Actor], AnyRef] def newActor(a: Actor) = synchronized { val wr = new WeakReference[Actor](a, refQ) - //Debug.info("created "+wr+" pointing to "+a) - storedRefs = wr :: storedRefs - + refMap.put(wr, null) pendingReactions += 1 } |