From 491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Fri, 12 Dec 2008 13:42:21 +0000 Subject: Fix memory leak in ActorGC --- src/actors/scala/actors/ActorGC.scala | 7 +++---- 1 file 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 } -- cgit v1.2.3