我之前发过这个帖子,但我以为我已将其跟踪到NW扩展,但是,最新版本中仍然会发生内存泄漏。我找到了这个讨论类似问题的线程,但将其归因于行为空间:
http://netlogo-users.18673.x6.nabble.com/Behaviorspace-Memory-Leak-td5003468.html
我发现了相同的症状。我的模型从大约650mb开始,但是在每次运行时,私有工作集内存上升到达到1024极限的程度。我有足够的记忆来提高这一点,但实际上它只能延迟发病。我正在使用表输出,因为基于之前的讨论,这有帮助,而且确实如此,但它只会减慢增加的速度。然而,最终内存使用量上升到PC开始挣扎的程度。我正在清除运行之间的所有数据,所以不应该有宿醉。我在突出显示的帖子中注意到他们将无头跑。我会尝试这个,但我想知道是否有其他人注意到这个问题?我的另一个选择是将BehSpc模拟分成几批,所以问题永远不会出现,我会很高兴让模型运行并走开,因为它需要大约2个小时才能完成。
答案 0 :(得分:1)
可能的后续步骤:
1)隔离问题发生与否的确切条件。你能否在不涉及nw扩展的情况下实现它?如果从模型中删除一些代码,它仍然会发生吗?如果你继续删除代码怎么办 - 什么时候问题消失了?什么是仍然导致问题的最小代码?几乎任何错误都只能通过少量代码来证明 - 并且发现最小的演示正是为了追踪原因并修复它所需要的。
2)使用JVM的标准内存分析工具来查看使用内存的对象类型。这可能会为可能的原因提供一些线索。
一般情况下,我们没有收到用户提供的其他错误报告。对于人们来说,使用BehaviorSpace(无头和无头)并进行持续数小时甚至数天的实验是常规的,而且已经存在多年了。所以无论你遇到什么,你几乎肯定会有一个更具体的原因 - 很可能是在nw扩展中 - 可能是孤立的。