内存中的空榛子iqueue大小

时间:2015-02-17 21:10:52

标签: queue hazelcast

我们在Hazelcast中创建一个简单的iqueue:

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

我们假设queue.size()== 0。

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

背景:

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

我已经在VisualVM中分析了堆转储,并且我发现队列项存储为IQueueItem对象。当队列大小为0时,则没有IQueueItem实例。但还有其他没有可移动的文物吗?求助。

1 个答案:

答案 0 :(得分:1)

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

一旦你不需要它就可以销毁队列 - 只需调用destroy()方法Hazelcast提供的每个结构都实现了这个接口。

相关问题