summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/long-running/jvm/memleak2_actor.scala39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/long-running/jvm/memleak2_actor.scala b/test/long-running/jvm/memleak2_actor.scala
new file mode 100644
index 0000000000..eeb017f086
--- /dev/null
+++ b/test/long-running/jvm/memleak2_actor.scala
@@ -0,0 +1,39 @@
+import scala.actors._
+import Actor._
+
+case object Start
+case object EndMe
+
+class A extends Actor {
+ def act = loop {
+ react {
+ case Start =>
+ case EndMe =>
+ exit()
+ }
+ }
+}
+
+object Test {
+
+ def z(in: Long) = if (in / 1024L == 0L) in
+ else if (in / (1024L * 1024L) == 0L) (in / 1024L).toString + "K"
+ else (in / (1024L * 1024L)).toString + "M"
+
+ def main(args: Array[String]) {
+ val rt = Runtime.getRuntime()
+ for (o <- 1 to 200000) {
+ println("Outer [2AN] "+o)
+ var a: List[A] = Nil
+ for (i <- 1 to 10000) {
+ var t = new A
+ a = t :: a
+ t.start
+ t ! Start
+ }
+ for (act <- a) act ! EndMe
+ rt.gc()
+ println("Free "+z(rt.freeMemory())+" total "+z(rt.totalMemory()))
+ }
+ }
+}