【问题标题】:empty hazelcast iqueue size in memory内存中的空榛子队列大小
【发布时间】:2015-02-17 21:10:52
【问题描述】:

我们在 Hazelcast 中创建了一个简单的队列:

    HazelcastInstance h = Hazelcast.newHazelcastInstance(config);
    BlockingQueue<String> queue = h.getQueue("my-distributed-queue");

假设 queue.size() == 0。

分布式队列“my-distributed-queue”是否使用任何内存资源?

背景:

我想使用 Hazelcast 创建大量 (>1k) 短期队列(用于保持项目组中的时间顺序)。我想知道如果 Hazelcast 中的 IQueue 对象被耗尽(大小==0)会发生什么。它会在内存中留下任何不会被 GC 清理的工件吗?

我分析了 VisualVM 中的堆转储,发现队列项存储为 IQueueItem 对象。当队列大小为 0 时,则没有 IQueueItem 实例。但是还有其他不可移动的人工制品吗?谢谢帮忙。

【问题讨论】:

    标签: queue hazelcast


    【解决方案1】:

    每个结构都有一些固定成本,即使它不包含任何数据。成本相当低,您可以在此处查看支持每个队列实例的结构:https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/queue/impl/QueueContainer.java

    当你不需要队列时,你总是可以销毁它——只需调用destroy() 方法 Hazelcast 提供的每个结构都实现了这个接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 2014-11-05
      相关资源
      最近更新 更多