【问题标题】:Is there a Java library the can cache data in memory or disk depending on the size of the data?是否有一个 Java 库可以根据数据的大小将数据缓存在内存或磁盘中?
【发布时间】:2011-11-11 10:45:52
【问题描述】:

有一种方法可以向缓冲区写入内容,但是一旦缓冲区变大,就开始写入文件吗?

我希望整个过程是自动的。基本上,我想写入缓冲区,并让库确保我不会耗尽内存。

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

有人知道这样的图书馆吗?

格雷

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

【问题讨论】:

    标签: java caching jakarta-ee memory-management out-of-memory


    【解决方案1】:

    Heritix 项目包含一个名为RecordingOutputStream 的类。来自 javadocs:

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

    只要记录的流小于内存缓冲区, 不会发生磁盘访问。

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

    【讨论】:

    • 你知道有一个更主流的类吗?不要挑剔,但我知道我必须获得特别批准才能使用该库。另外,取决于它是什么类型的开源,我可能根本无法使用它。
    【解决方案2】:

    EHCache 正是这样做的。 您需要做的就是配置它,以便当它拥有一定限制的对象时,它们会自动刷新到磁盘存储中

    【讨论】:

    • 不幸的是,正如您所注意到的,您必须配置对象的 number 而不是它们占用的 memory 量。 IMO 是 EHCache 的一个严重限制,在未来的神话版本中,他们应该解决这个问题。
    • @Kico Lobo 你能给我更多细节吗,或者链接到一个示例。
    【解决方案3】:

    @Grae:你的应用服务器是什么......可能是你的应用服务器提供了这样的功能...... 例如如果您的应用服务器是 websphere 应用服务器,那么您可以使用 WAS 提供的动态缓存服务并使用它的“磁盘卸载”功能。更多详情:WAS cache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2010-11-29
      • 2011-10-16
      • 2014-11-06
      • 2013-03-19
      • 2012-03-24
      • 1970-01-01
      相关资源
      最近更新 更多