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

Java 如何在列表中存储大型对象的设计,java,list,out-of-memory,Java,List,Out Of Memory,我需要一个关于我遇到的面试问题的提示。我试图找到一个解决方案,但我需要这里专家的建议。如果你遇到这种特殊情况,你会采取什么不同的策略?我的问题和想法如下: 你想用java在一个列表中存储大量的对象。对象的数量非常庞大,并且逐渐增加,但是可用内存非常有限。你会怎么做 答:我的回答是,一旦列表中的元素数量 如果超过某个阈值,我会将它们转储到一个文件中。然后,我通常会构建类似缓存的数据结构,以保存最频繁或最近添加的元素。我对操作系统使用的页面交换进行了类比 但这会涉及磁盘访问,速度会变慢并影响执行 我

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

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

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

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

我不知道这个问题的解决办法,在面试中也无法正确思考。我试图回答如下:

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

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


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

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

我认为答案应该是使用堆栈或可以有最大大小的东西。然后根据数据类型占用的内存量和设备上的内存大小设置最大大小。欢迎使用StackOverflow。如中所述,此网站是有用问题及其答案的存储库,而不是讨论论坛。弄清楚面试官为什么想要一个特定的答案在这里是离题的,因为它太宽泛了,而且是基于观点的。请参加,访问,特别是阅读和学习如何有效地使用此网站。这通常由java中的arraylist处理,对吗?负载系数为0.75时,它将在内部处理元件的动态增加。如果ram非常有限,无法容纳列表中的所有元素,会发生什么情况。在结束之前,这个问题主要属于stackexchange。肯定有类似的问题。希望他们能给出一些想法。正如我在问题中所说的,我对面试官的想法并不好奇。我想知道这里的人们可能有不同的策略和总体设计思想。如果需要,我可以删除面试部分,并将其作为我自己的问题重新发布。这行得通吗?请包括对链接模式的解释(最好有一个示例),以便答案可以保持自包含(即,这样它就不依赖于外部资源)。此外,值得一提的是,为了使用flyweight模式,对象必须是不可变的。是的!没错……这就是我要问的。让需要存储为不可变的对象,并且只在列表中存储引用,这将非常有意义。