是否有Java库可以根据数据大小将数据缓存在内存或磁盘中?

是否有Java库可以根据数据大小将数据缓存在内存或磁盘中?,java,caching,jakarta-ee,memory-management,out-of-memory,Java,Caching,Jakarta Ee,Memory Management,Out Of Memory,这是一种向缓冲区写入内容的方法,但一旦缓冲区变大,就开始向文件写入内容了吗 我希望整个过程是自动化的。基本上,我想写一个缓冲区,并让库确保我没有用完内存 我从不想阻碍写作过程。如果缓冲区太大,库应该将其中的一部分写入磁盘 有人知道这样的图书馆吗 格拉 主要的一点是,我只想在必要时写入磁盘。如果缓冲区大小允许,数据应该保存在内存中。该项目包括一个名为的类。从javadocs: RecordingOutputStream使用内存缓冲区和备份磁盘 文件,以允许它记录仅受以下限制的任意长度的流 可用磁盘

这是一种向缓冲区写入内容的方法,但一旦缓冲区变大,就开始向文件写入内容了吗

我希望整个过程是自动化的。基本上,我想写一个缓冲区,并让库确保我没有用完内存

我从不想阻碍写作过程。如果缓冲区太大,库应该将其中的一部分写入磁盘

有人知道这样的图书馆吗

格拉

主要的一点是,我只想在必要时写入磁盘。如果缓冲区大小允许,数据应该保存在内存中。

该项目包括一个名为的类。从javadocs:

RecordingOutputStream使用内存缓冲区和备份磁盘 文件,以允许它记录仅受以下限制的任意长度的流 可用磁盘空间

只要记录的流小于内存中的缓冲区, 不会进行磁盘访问

您可以查看以了解这是如何实现的。

EHCache正是这样做的。
您所需要做的就是对其进行配置,以便当它持有一定数量的对象时,它们将自动刷新到磁盘存储中。Grae:什么是您的应用程序服务器…您的应用程序服务器是否提供了此类功能。。
例如,如果您的应用服务器是websphere application server,那么您可以使用WAS提供的dyna缓存服务,并使用其“磁盘卸载”功能。更多详情:

您知道有哪个主流类拥有它吗?我不想挑剔,但我知道我必须得到特别批准才能使用那个图书馆。此外,取决于它是什么类型的开源软件,我可能根本无法使用它。不幸的是,正如您所指出的,您必须配置对象的数量,而不是它们占用的内存量。IMO是EHCache的一个严重限制,在一个虚构的未来版本中,他们应该解决这个问题。@Kico Lobo你能给我更多的细节,或者链接到一个示例吗。