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