1

在我的程序中,所有状态都保存在原子中的一个巨大映射中,该映射在每次迭代中由大量纯函数更新。我已经确定堆大小正在增加,我如何找到负责的代码?我尝试了 VisualVM,但它提供了通用信息,我找不到我的状态的哪个部分正在增长以及哪个函数导致它增长。

4

1 回答 1

1
  1. 寻找常见的陷阱,例如忘记使用 with-open、挂在序列的头部等。

  2. 使用 JVisualVM 隔离较小的代码段,看看您是否仍然看到相同类型的内存增长。如果敲掉或嘲笑某件作品没有任何区别,那就把它放回去,如果它有区别,那么你可以专注于它并弄清楚发生了什么。

我不知道任何灵丹妙药工具或技术,这只是一个分而治之的过程,并考虑您在代码中所做的事情。

于 2012-10-09T03:27:32.863 回答