summaryrefslogtreecommitdiff
path: root/test/long-running
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-05-29 15:22:52 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-05-29 15:22:52 +0000
commitf98d917d42b6a5b38e659450c683f93d7ffd9560 (patch)
treea2e3016db0febd436a1bd5b23c4b4ac153c84318 /test/long-running
parentda332a0e42e38f62f3617998e5e12af2586fb331 (diff)
downloadscala-f98d917d42b6a5b38e659450c683f93d7ffd9560.tar.gz
scala-f98d917d42b6a5b38e659450c683f93d7ffd9560.tar.bz2
scala-f98d917d42b6a5b38e659450c683f93d7ffd9560.zip
Added long-running memory-leak test for Actor.
Diffstat (limited to 'test/long-running')
-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()))
+ }
+ }
+}