首页 > 解决方案 > arrayBlockingQueue 和linkedBlockingQueue 中的内存消耗

问题描述

假设我将容量arrayBlockingQueuelinkedBlockingQueue两者都设为 100。我在每个元素中仅添加 10 个元素。

array即使 90 个元素是空的,也会保持满容量吗?我的意思是它会有 10 个元素和 90 个空值吗?另一件事,在这种情况下会如何linked表现?它会有 10 个还是 100 个节点?会有 90 个“空值节点”吗?

有人可以解释一下吗?他们在这种情况下表现如何?

标签: javaarraylistlinked-listqueueblockingqueue

解决方案


如果ArrayBlockingQueue它会创建一个大小为 100 的数组。它将包含您插入的 10 个元素,其余的将是null.

如果LinkedBlockingQueue只创建 10 个节点 - 这里的容量被用作创建具有最大条目限制的所谓有界队列的限制(在多线程环境中,不超出内存可能很方便)。


推荐阅读