代码之家  ›  专栏  ›  技术社区  ›  CPUFry

CommModel中可能存在内存泄漏

  •  0
  • CPUFry  · 技术社区  · 5 年前

    我们试图在rinsim中实现一个代理mas。我们用一个 CommModel 我是说, CommUser CommDevice 从信息素向蚂蚁发送信息(模拟“嗅”信息素)。我们记录信息素(来自 通信用户 如果信息素被丢弃,则进行模拟;如果信息素蒸发,则取消注册。尽管它们似乎没有从 通信模型 (Rinsim的一部分)。我们使用工具分析了代码,结果如下

    “com.github.rinde.rinsim.core.model.comm.commmodel”的一个实例 由“sun.misc.launcher$appclassloader@0x8169f378”加载 691677816(99.43%)字节。内存累积在一个实例中 “com.github.rinde.rinsim.util.LinkedHashBiMap”的 “sun.misc.launcher$appclassloader@0x8169f378”。

    它会随着时间的推移而增长(尽管我们在模拟中没有注册信息素)。

    我们认为 LinkedHashBiMap 指的是用户服务或未注册的服务 BiMap 通信模型 是的。

    我们应该做些不同的事情来注销通信设备吗?或者这可能是框架中的内存泄漏?

    编辑

    在进一步研究之后,在 通信模型 类:注销comm用户后,该用户及其设备将保存在未注册设备/用户的列表中,以便将来再次注册时,为其分配相同的设备。虽然这张名单从未被清除,所以所有被摧毁的蚂蚁都留在记忆中。我们现在使用反射来清除列表,尽管这不是一个好的解决方案。

    0 回复  |  直到 5 年前
    推荐文章