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

标签 java list out-of-memory

<分区>

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

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

A. I answered by saying that, once the number of elements in the list get over a certain threshold, I would dump them to a file. I would typically then build cache-like data-structure that would hold the most-frequently or recently added elements. I gave an analogy of page swapping employed by the OS.

问。但是这样会涉及到磁盘访问,会比较慢,影响执行。

我不知道这个问题的解决方案,在采访中无法正确思考。我试着回答为:

A. In this case, I would think of horizontally scaling the system or adding more RAM.

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

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

最佳答案

也许我不确定,但它表明有点 Flyweight Pattern .这与字符串池中使用的模式相同,必须高效实现除此之外,我们需要专注于数据库相关任务,以便在超过阈值限制时保留数据。另一种技术是连载它,但正如您所说,面试官不满意并想要其他解释。

关于java - 设计如何在列表中存储大对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52070418/

相关文章:

java - 从异步方法访问 Neo4j

java - 为什么 spring batch itemWriter 有方法写数据列表

python - 如何接受多个元素的列表作为命令行参数?

java - 多线程中如何处理OutOfMemoryError?

c# - 使用文件流写入字节通过控制台输出进度时出现Out of Memory异常

java - 单元测试、调试和运行模式下的模拟对象

java - KeyCloak 服务器响应 IllegalArgumentException :An invalid control character was present in the cookie value or attribute

c# - 有什么叫做列表数组的东西吗?

python - 有没有办法循环索引

Java “Error occurred during initialization of VM” 错误