假脱机到磁盘的Java集合
在Java中,由于在事务过程中建立了一些非常大的列表和设置,并且在事务结束时只迭代了一次,所以我的内存不足。是否有提供Java集合的库可以在集合大小超过给定阈值时将其可序列化内容假脱机到磁盘?您可以尝试类似的方法及其overflowToDisk选项我不会向您发布示例代码,因为它会变得太长,但我以前就是这样做的:假脱机到磁盘的Java集合,java,Java,在Java中,由于在事务过程中建立了一些非常大的列表和设置,并且在事务结束时只迭代了一次,所以我的内存不足。是否有提供Java集合的库可以在集合大小超过给定阈值时将其可序列化内容假脱机到磁盘?您可以尝试类似的方法及其overflowToDisk选项我不会向您发布示例代码,因为它会变得太长,但我以前就是这样做的: 扩展LinkedBlockingQueue 覆盖其提供,放置,轮询,获取和删除方法。示例:如果超类“offer返回false(已达到容量),则我将开始序列化到磁盘 同样,在take实现中
LinkedBlockingQueue
提供
,放置
,轮询
,获取
和删除
方法。示例:如果超类“offer
返回false(已达到容量),则我将开始序列化到磁盘take
实现中,检查内存中是否存在任何元素,如果没有,则开始从磁盘读取(并删除读取的第一条记录,因为它现在将驻留在内存中;当然,也可以批量读取记录)BlockingQueue
接口的文档,但这是值得的,因为您只需要添加所需的一点点额外功能,而不是从头开始编写整个过程
希望这能有所帮助。这与您可能要搜索的不完全一样,请看一看Hadoop。您不使用标准RDBMS来实现这一点有什么原因吗?一方面,这是对你所问问题的定义。即使是像h2db这样的轻量级工具,sqlite也可以完成大多数任务。据我所知,Ehcache没有从缓存中轮询(get+remove)元素的逻辑,根据我只看到的#get()方法的文档。也许您知道如何使用ehcache实现这些功能?