我们正在使用Akka(使用JAVA)框架向后端服务器发送消息。我们的应用程序正常工作5-6小时,大约160万条消息。然后它变得没有响应。在分析GC日志后,我们发现JVM无法清理堆内存。我们使用Eclipse内存分析器工具进行了堆转储并对其进行了分析。它向我们展示了两种可能的内存泄漏原因,如下所述,两者都与AKKA有关。
" akka.actor.LocalActorRef"的一个实例占用393,842,136(42.88%)字节。内存在" scala.collection.immutable.RedBlackTree $ BlackTree"的一个实例中累积。由" sun.misc.Launcher加载$ AppClassLoader
" akka.actor.RepointableActorRef"的8,774个实例,占用419,071,456(45.62%)个字节。这些实例是从" java.util.HashMap $ Node
的一个实例引用的一旦完成工作,我们就会杀死所有演员及其相应的孩子。我们也会覆盖监督战略并确保在有任何例外的情况下杀死演员。
所有这些都没有帮助堆积堆中的对象。是否有任何特定的方法来确保akka系统不会与actor泄漏 一旦完成工作,我们就会杀死所有演员及其相应的孩子。我们也会覆盖监督策略并确保在有任何例外的情况下杀死演员。
所有这些都没有帮助堆积堆中的对象。是否有任何特定的方法来确保akka系统不会与actor泄漏