Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的程序中,所有状态都保存在原子中的一个巨大映射中,该映射在每次迭代中由大量纯函数更新。我已经确定堆大小正在增加,我如何找到负责的代码?我尝试了 VisualVM,但它提供了通用信息,我找不到我的状态的哪个部分正在增长以及哪个函数导致它增长。
寻找常见的陷阱,例如忘记使用 with-open、挂在序列的头部等。
使用 JVisualVM 隔离较小的代码段,看看您是否仍然看到相同类型的内存增长。如果敲掉或嘲笑某件作品没有任何区别,那就把它放回去,如果它有区别,那么你可以专注于它并弄清楚发生了什么。
我不知道任何灵丹妙药工具或技术,这只是一个分而治之的过程,并考虑您在代码中所做的事情。