【问题标题】:Java queue with memory size limit具有内存大小限制的 Java 队列
【发布时间】:2015-04-06 10:57:02
【问题描述】:

我一直在尝试找到具有特殊大小限制的Java 队列实现。与限制队列中对象计数的通常大小参数相比,我需要限制队列的最大内存使用量(以字节为单位)。队列将用于保存大小非常不同的对象,有些很大,有些非常小。 IE。队列将只容纳少量的大对象和大量的小对象。

另一种可能性是插入方法中带有大小参数的队列。在向队列中添加新元素时,我可以指定要添加的对象有多大。

有人知道这样的Java 队列实现吗?

谢谢!

【问题讨论】:

  • 欢迎来到 Stackoverflow。分享你尝试过的代码。
  • 请查看this 上一个 SO 问题。一旦你遵循了这些规则,你就应该能够创建你所追求的数据结构。
  • 尝试计算内存使用量会非常缓慢并且可能相当不准确。如果您想要任何类型的性能,则没有可行的方法来做到这一点。
  • 获取任意 Java 对象的内存使用量是极其困难和昂贵的。你最好找到一些其他指标来限制。

标签: java memory-management collections queue


【解决方案1】:

https://github.com/ehcache/sizeof

<dependency>
  <groupId>org.ehcache</groupId>
  <artifactId>sizeof</artifactId>
  <version>0.3.0</version>
</dependency>

这个库为您提供了一种检查队列大小的方法:

private SizeOf sizeOf = SizeOf.newInstance();
sizeOf.deepSizeOf(someQueue)

在您的实现类的add 方法中,始终使用sizeOf.deepSizeOf 检查队列的大小,如果此值超出您的预期限制,则抛出IllegalStateException 或处理错误。

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 1970-01-01
    • 2012-06-18
    • 2016-10-30
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多