设计如何在列表中存储大对象

时间:2018-08-29 05:59:38

标签: java list out-of-memory

我需要一个关于我遇到的面试问题的提示。我试图找到一种解决方案,但在这里我需要专家的建议。如果遇到这种特殊情况,您将采用什么不同的策略?问题和我的想法如下:

问:您想在Java的列表中存储大量对象。对象的数量非常庞大,并且逐渐增加,但是可用内存非常有限。你会怎么做?

  

A。我的回答是,一旦列表中的元素数量   超过某个阈值,我会将其转储到文件中。然后,我通常会构建类似缓存的数据结构,该数据结构将容纳最频繁或最近添加的元素。我给出了操作系统采用的页面交换类比。

问:但这将涉及磁盘访问,并且速度会变慢并影响执行。

我不知道解决方案,在面试中无法正确思考。我试图回答为:

  

A。在这种情况下,我会考虑水平扩展系统或   添加更多RAM。

在我回答了这个问题之后,我的电话采访立即结束。我觉得面试官对答案不满意。但是,答案应该是什么。

此外,我不仅对答案感到好奇,还想了解处理该问题的不同方法。

1 个答案:

答案 0 :(得分:1)

也许我不确定,但这表示Flyweight Pattern。这与在字符串池中使用的模式相同,并且必须有效执行该模式。此外,我们需要关注与数据库相关的任务,以便在超过阈值限制时保留数据。另一种技术是序列化它,但是正如您所说,面试官并不满意,还需要其他解释。