缓存大型对象并在需要时对其进行反序列化(Java)

缓存大型对象并在需要时对其进行反序列化(Java),java,caching,serialization,Java,Caching,Serialization,我已经到了谷歌和我的知识都能让我进步的地步 考虑以下情况:我读取了大量(多达数百万)大型对象(每个对象高达500mb),有时我仅读取了500kb的数百万对象,这完全取决于我软件的用户。每个对象都将在一个管道中处理,因此它们不需要一直都在内存中,只需要一个引用就可以在序列化后在我的硬盘上再次找到对象,这样我就可以再次反序列化它。所以它有点像大型对象的持久缓存 所以我的问题来了: 是否有一个解决方案(任何框架)可以满足我的需要?这包括:在确定缓存是否已满后,对大型对象进行任意序列化 如果没有:有没有

我已经到了谷歌和我的知识都能让我进步的地步

考虑以下情况:我读取了大量(多达数百万)大型对象(每个对象高达500mb),有时我仅读取了500kb的数百万对象,这完全取决于我软件的用户。每个对象都将在一个管道中处理,因此它们不需要一直都在内存中,只需要一个引用就可以在序列化后在我的硬盘上再次找到对象,这样我就可以再次反序列化它。所以它有点像大型对象的持久缓存

所以我的问题来了:

  • 是否有一个解决方案(任何框架)可以满足我的需要?这包括:在确定缓存是否已满后,对大型对象进行任意序列化

  • 如果没有:有没有办法智能地检查对象是否应该序列化?e、 检查内存大小?或者类似于软引用上的侦听器(当它被发布时?)

  • 非常感谢


    Christian

    存储数百万个对象听起来像是一个数据库应用程序。

    查看Oracle Coherence。还有一些开源的替代方案,但是一致性是最丰富的特性

    编辑:

    当然可以。但在某个时刻,我需要在我的“软件”中同时使用许多对象,以便以某种方式将它们批量计算在一起。这些对象是图像(顺便说一句;)我假设您已经有了一个包含文件名等的图像数据结构,而不是图像数据本身。为什么不将文件(图像数据)存储在磁盘/数据库上,并在需要时检索它们呢?实际上我两者都有。图像数据和结构。但你是对的,这正是我的问题:如何确定是否需要序列化对象(根据可用内存)。有聪明的方法吗?e、 使用softreference意味着,当我创建或更改一个对象时,我总是需要序列化它,因为我不知道java何时将它从堆中启动。或者我可以听听吗?谢谢你的提示。你能说出一个开源项目吗?实际上,我们提供的软件应该是开源的。