我们试图在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用户后,该用户及其设备将保存在未注册设备/用户的列表中,以便将来再次注册时,为其分配相同的设备。虽然这张名单从未被清除,所以所有被摧毁的蚂蚁都留在记忆中。我们现在使用反射来清除列表,尽管这不是一个好的解决方案。