Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java垃圾收集和内存问题_Java_Memory_Memory Management_Hash_Garbage Collection - Fatal编程技术网

Java垃圾收集和内存问题

Java垃圾收集和内存问题,java,memory,memory-management,hash,garbage-collection,Java,Memory,Memory Management,Hash,Garbage Collection,我正在开发一个棋子机器人,唯一的内存密集型操作是散列评估的棋盘位置。作为测试更改的一部分,我让机器人与另一个机器人连续玩很多游戏。每当内存使用量徘徊在2GB左右(这是我在Netbeans中设置的内存限制)时,我就会遇到不稳定的行为。当我关闭散列,内存使用下降到非常低的水平时,这些问题就消失了 另一个可能的相关症状是,随着它玩更多的连续游戏,它会使用越来越多的内存。我在游戏之间初始化了一个新的AI实例,所有对前一个实例的引用,它的HashMap及其内容都丢失了。Java垃圾收集应该能够清除这些对象

我正在开发一个棋子机器人,唯一的内存密集型操作是散列评估的棋盘位置。作为测试更改的一部分,我让机器人与另一个机器人连续玩很多游戏。每当内存使用量徘徊在2GB左右(这是我在Netbeans中设置的内存限制)时,我就会遇到不稳定的行为。当我关闭散列,内存使用下降到非常低的水平时,这些问题就消失了

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

我不明白发生了什么事。特别是,

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