我使用hashmap存储QTable来实现强化学习算法.我的hashmap应该存储15000000个条目.当我运行算法时,我看到进程使用的内存超过1000000K.当我计算内存时,我预计它的使用量不会超过530000K.我试着写一个例子,我得到了相同的高内存使用率:
public static void main(String[] args) {
HashMap map = new HashMap<>(16_000_000, 1);
for(int i = 0; i < 15_000_000; i++){
map.put(i, i);
}
}
Run Code Online (Sandbox Code Playgroud)
我的记忆力:
每个入口集为32字节
容量为15000000
HashMap实例使用:32*SIZE + 4*CAPACITY memory =(15000000*32 + 15000000*4)/ 1024 = 527343.75K
我的记忆计算错在哪里?