【问题标题】:Handling OutOfMemory Error in java处理 Java 中的 OutOfMemory 错误
【发布时间】:2018-06-27 07:10:40
【问题描述】:

我的应用程序中有一个全局HashMap,其中包含自定义对象作为键。第三方将其称为 API,他们将创建一个新的自定义对象,如果 HashMap 中尚不存在该对象,他们会将其放入地图中。在这种情况下如何管理 OutOfMemoryError,因为 HashMap 大小不断增加,部署后增加 JVM 内存很繁琐。

【问题讨论】:

  • 问题是,你真的应该使用 HashMap 来存储千兆字节的数据吗?
  • 跟进 NiVeR,这就是您使用数据库的目的
  • 添加到 Laurens - 使用数据库后,您可能希望使用地图作为缓存。有许多缓存可用于执行此操作。制定良好的驱逐政策。
  • 在这种情况下,我的问题更具体到缓存实现。非常感谢您指出 DB 的使用 :) 我应该更清楚地询问缓存实现。

标签: java memory-management hashmap


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2016-11-14
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多