代码之家  ›  专栏  ›  技术社区  ›  theimpatientcoder

如何在列表中存储大型对象的设计[关闭]

  •  4
  • theimpatientcoder  · 技术社区  · 6 年前

    我需要一个面试问题的提示。我试图找到一个解决办法,但我需要这里的专家的建议。如果你遇到这种特殊情况,你会采取什么不同的策略?问题和我的想法如下:

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

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

    问。但这会涉及到磁盘访问,而且会比较慢并影响执行。

    A.在这种情况下,我会考虑横向扩展系统或 添加更多内存。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bhargav Modi vivekpansara    6 年前

    也许我不确定,但这表明 Flyweight Pattern . 这与字符串池中使用的模式是相同的,必须有效地实现。除此之外,如果超过阈值限制,我们需要关注与数据库相关的任务,以便持久化数据。另一个技巧是序列化,但正如你所说,面试官不满意,希望得到其他解释。