我目前正在使用Scala的两个角色进行工作。其中一个是生产者,它生成一些数据并将其发送给解析器。生产者通过消息发送HashMap[String,HashMap[Object,List[Int]]]
(以及this来标记发送者):
parcer ! (this,data)
解析器始终在等待以下类似信息:
def act(){
loop{
react{
case (producer, data)=> parse(data);
}
}
}
在正常情况下,程序运行得非常完美。但是,当处理大量数据和发送许多消息时(哈希大约有10^4个元素,内部哈希约有100个元素,列表长度为100),程序会崩溃。它没有显示任何错误或异常,只是停止了。
问题似乎是生产者的工作速度比解析器快得多(而且目前我不想使用超过一个解析器)。
在阅读了 scala mailbox size limit 之后,我想知道我的解析器的邮箱是否已经达到其限制。该帖子还提供了一些解决方案,但我首先需要确保这是问题所在。如何测试这个问题?
有没有一种方法可以知道演员的内存限制?那么读取邮箱中已使用/未使用的内存呢?
如果在 该链接 中没有发布的工作流程建议也是欢迎的。
谢谢,