相关疑难解决方法(0)

在类中包装akka actor会导致内存泄漏吗?

我有一个相当基本的包装类围绕scala akka actorRef.基本上该类有一个作为actorRef的字段,并公开了许多将"告诉"特定消息给actorRef的方法.以这种方式,我可以遵循指定API并避免暴露tell或消息类.我在我的程序中遇到了内存泄漏,我想知道我的akka​​ actor周围的包装是否导致问题.我在下面写了这个模拟来测试我的理论.

import akka.actor.{ActorSystem, ActorRef, PoisonPill}
import akka.actor.ActorDSL._

implicit val as = ActorSystem()

def createMemoryActor(): ActorRef = actor(new Act {
  Array.fill(99999999)(1.0) // Just to take up memory
  become {
    case _ => print("testing memory leaks")
  }
})

val memoryActor = createMemoryActor() // memory usage jumps up

memoryActor ! PoisonPill
System.gc() // memory usage goes back down

case class ActorWrapper() {
  val memoryActor = createMemoryActor()
}

def doNothing(): Unit = {
  val shouldGetGCed = ActorWrapper()
  ()
}

doNothing() // …
Run Code Online (Sandbox Code Playgroud)

memory-leaks scala out-of-memory actor akka

2
推荐指数
1
解决办法
1589
查看次数

标签 统计

actor ×1

akka ×1

memory-leaks ×1

out-of-memory ×1

scala ×1