Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 如何从HashMap中回收堆内存_Java_Hashmap_Heap Memory - Fatal编程技术网

Java 如何从HashMap中回收堆内存

Java 如何从HashMap中回收堆内存,java,hashmap,heap-memory,Java,Hashmap,Heap Memory,这是我第一次故意使用内存限制,所以我遇到了问题 HashMap <String, double[]> memory = new HashMap<String, double[]>(); if ((heapSize/heapMaxSize)<0.9) memory.put(address, arr); 要插入的内容数量是无限的,因此没有必要增加堆内存大小。所以我只是把它的使用率限制在90%,因为它足以满足我想要实现的目标 这个Has

这是我第一次故意使用内存限制,所以我遇到了问题

    HashMap <String, double[]> memory = new HashMap<String, double[]>();

    if ((heapSize/heapMaxSize)<0.9)
        memory.put(address, arr);
要插入的内容数量是无限的,因此没有必要增加堆内存大小。所以我只是把它的使用率限制在90%,因为它足以满足我想要实现的目标

这个HashMap函数被反复调用,我的计划是以某种方式清理堆内存,并再次使用高达90%的空间。但我不知道怎么做。谁能给我点化一下吗

谢谢大家!

好的,我得到了答案

记忆。干净

然后通过

System.gc


然后成功了

基本上,你是想把它用作缓存吗?如果是这样,我会使用为工作设计的东西,例如,答案取决于您如何识别不再需要的条目,并且可以释放。@JonSkeet是的,它对缓存也有类似的作用。我想使用hash是因为它的效率,我不知道cacheapi。我要试试。@dasblinkenlight我只想把里面的东西都擦干净。不仅仅是从HashMap,还完全从内存。为什么,确切地说?当您需要更多内存时,Java的GC会自动为您解决这些问题。亲爱的读者们,这就是为什么Java的“让我们不要反对任何东西”是个坏主意的原因。@soc:这是怎么回事?