在我的程序中,所有状态都保存在原子中的巨型地图中,在每次迭代中由一系列纯函数更新。我已经确定堆大小正在增加,我如何找到负责的代码?我尝试过VisualVM,但是它提供了一般信息,我无法找到我的状态的哪个部分正在增长以及哪个功能正在增长。
答案 0 :(得分:1)
寻找常见的问题,比如忘记使用 - 打开,挂在序列的头部等等。
隔离较小的代码段,看看是否仍然使用JVisualVM看到相同类型的内存增长。如果淘汰或嘲弄某件作品没有任何区别,那么就把它放回去,如果它有所不同,那么你可以专注于那件事并弄清楚发生了什么。
我不知道任何银弹工具或技术,它只是一个分而治之的过程,并且在思考你在代码中做了什么。