假设我有一个大型系统,它在许多地方使用 Scala 全局执行上下文来执行不同的期货。并且有一天在这个系统中出现了性能问题(内存转储分析指出原因是GEC中的Futures太多)。我很快就找到了原因,因为我很幸运,但这导致我开始考虑监控执行上下文状态的可能性。
这并不容易,我找不到有关该主题的文章。我破解了 GEC,现在它通过 JMX(QueuedSubmissionCount、QueuedCount 等)公开了几个参数,但仍然不足以判断哪个类导致了泄漏。
我考虑了一个执行上下文的自定义包装器,它将采用一个额外的标识符(类名或其他东西)并计算每个标识符的期货数量。但我相信很多程序员都有同样的问题,也许你有更好的主意?