Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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中OutOfMemory错误的处理_Java_Memory Management_Hashmap - Fatal编程技术网

java中OutOfMemory错误的处理

java中OutOfMemory错误的处理,java,memory-management,hashmap,Java,Memory Management,Hashmap,在我的应用程序中有一个全局HashMap,其中包含自定义对象作为键。第三方将此作为API调用,他们将创建一个新的自定义对象,如果它不在HashMap中,他们将把它放入映射中。在这种情况下,如何管理OutOfMemoryError,因为HashMap的大小不断增加,部署后增加JVM内存是一件乏味的事情。如果这个映射可以无限期地增加,那么您需要一个不同的解决方案,而不仅仅是内存中的HashMap。即使不断增加JVM的限制,实际使用的硬件也是有限的 您可以将这些密钥保存在数据库(或文件)中,并对其进行

在我的应用程序中有一个全局
HashMap
,其中包含自定义对象作为键。第三方将此作为API调用,他们将创建一个新的自定义对象,如果它不在
HashMap
中,他们将把它放入映射中。在这种情况下,如何管理OutOfMemoryError,因为HashMap的大小不断增加,部署后增加JVM内存是一件乏味的事情。

如果这个映射可以无限期地增加,那么您需要一个不同的解决方案,而不仅仅是内存中的
HashMap
。即使不断增加JVM的限制,实际使用的硬件也是有限的


您可以将这些密钥保存在数据库(或文件)中,并对其进行查询。为了提高性能,您可以决定将最近使用的N个密钥作为缓存保留在内存中。

问题是,您真的应该使用HashMap来存储千兆字节的数据吗?在NiVeR之后,这就是您将使用DB添加到Laurens的内容-一旦您使用DB,您可能会希望使用map作为缓存。有许多缓存可用于执行此操作。设置良好的逐出策略。在这种情况下,我的问题更具体到缓存实现。非常感谢您指出DB:)的用法。我应该更清楚地询问缓存实现。