1
我有一个简单的测试程序来尝试...内存泄漏
object ActorLeak extends App {
val system = ActorSystem("ActorLeak")
val times = 100000000
for (i <- 1 to times) {
val myActor = system.actorOf(Props(classOf[TryActor], i), name = s"TryActor-$i")
//Thread sleep 100
myActor ! StopCmd
if (i % 10000 == 0)
println(s"Completed $i")
}
println(s"Creating and stopping $times end.")
val hookThread = new Thread(new Runnable {
def run() {
system.shutdown()
}
})
Runtime.getRuntime.addShutdownHook(hookThread)
}
case object StopCmd
class TryActor(no: Int) extends Actor {
def receive = {
case StopCmd => context stop self
}
}
我发现:一段时间的OutOfMemoryError,有时会使JVM死了,跑慢点慢点......
是否有记忆泄漏创建/停止演员?
我把你的for循环重写为一个递归函数,认为它可能是咀嚼内存的'1 to times'范围的分配;但是我仍然看到随着时间的推移内存使用量的显着增长(类似于您的结果)。 –