我正在开发一个象棋机器人,唯一的内存密集型操作是散列评估板位置。作为测试变化的一部分,我让机器人对另一个机器人进行了大量连续游戏。当内存使用大约2GB(这是我在Netbeans中设置的内存限制)时,我遇到了不稳定的行为。当我关闭散列并且内存使用率下降到非常低的水平时,这些问题就会消失。
另一个可能的相关症状是,当它播放更多连续游戏时,它会使用越来越多的内存。我在游戏和所有对前一个实例的引用之间初始化了一个新的AI实例,它的HashMap和它们的内容都丢失了。 Java垃圾收集应该能够清理这些对象,但看起来它无法清除所有这些对象。
我很想知道发生了什么。特别是,