summaryrefslogtreecommitdiff
path: root/src/actors
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-12-12 13:42:21 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-12-12 13:42:21 +0000
commit491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b (patch)
tree4ec7376b3e7d5802f7af57e76fe0da78f9fe410e /src/actors
parenteba7932b139aa400e4d7a0b25b1dc7d61404e283 (diff)
downloadscala-491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b.tar.gz
scala-491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b.tar.bz2
scala-491ebd0c2cc93a08cd6fa85288e2ae1129dcef0b.zip
Fix memory leak in ActorGC
Diffstat (limited to 'src/actors')
-rw-r--r--src/actors/scala/actors/ActorGC.scala7
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
}