Java垃圾收集和内存问题

时间:2016-02-28 01:09:20

标签: java memory memory-management hash garbage-collection

我正在开发一个象棋机器人,唯一的内存密集型操作是散列评估板位置。作为测试变化的一部分,我让机器人对另一个机器人进行了大量连续游戏。当内存使用大约2GB(这是我在Netbeans中设置的内存限制)时,我遇到了不稳定的行为。当我关闭散列并且内存使用率下降到非常低的水平时,这些问题就会消失。

另一个可能的相关症状是,当它播放更多连续游戏时,它会使用越来越多的内存。我在游戏和所有对前一个实例的引用之间初始化了一个新的AI实例,它的HashMap和它们的内容都丢失了。 Java垃圾收集应该能够清理这些对象,但看起来它无法清除所有这些对象。

我很想知道发生了什么。特别是,

  • 为什么我没有收到任何有关达到内存限制的错误,通知或警告?
  • 当达到内存限制时,我预计程序会变慢。相反,它只是做出不稳定的决定,就像它从HashMap中提取无效值一样。
  • 关于在连续游戏中增加内存使用量,Java的垃圾收集是否正常工作?

0 个答案:

没有答案