使用演员的计算密集型scala过程不合作地挂起

时间:2011-01-02 06:22:46

标签: scala jvm

我有一个计算密集的scala应用程序挂起。通过挂起我意味着它使用1%CPU坐在进程堆栈中但不响应kill -QUIT也不能通过jdb attach连接。 在800-900%CPU运行2-12小时后才会卡住 该应用程序使用~10 scala.actors。

到目前为止,我在kill -QUIT方面取得了巨大的成功,但我对如何继续进行了一些重视。

演员使用println向stdout写了相当数量的println,它被重定向到文本文件但到目前为止在诊断上没有帮助。 我只是希望在杀死-QUIT失败时有一些明显的技术,我不知道。 或者只是确认多个actor是异步打印的,这是一个真正的坏主意(尽管我最近才开始使用这些结果) 细节 scala 2.8.1& 2.8.0 mac osx 10.6.5 java版“1.6.0_22”

由于

2 个答案:

答案 0 :(得分:0)

如果你只是想从运行队列中删除进程,那么显而易见的选择是

kill -9

当然,您首先要避免必须这样做,但是您没有提供任何可以帮助您的信息。在多个演员中写入stdout确实是一个坏主意,但最糟糕的事情可能是输出乱码。

答案 1 :(得分:0)

我大多数时候都看到JVM的反应就像它进入没有permgen空间的那样。它将无能为力(甚至死亡)。您在打印输出中没有找到任何痕迹?你有没有试过增加permgen空间?

相关问题