arrayBlockingQueue和linkedBlockingQueue中的内存消耗

问题描述

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

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

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

解决方法

对于ArrayBlockingQueue,它将创建一个大小为100的数组。它将包含您插入的10个元素,其余元素为null

LinkedBlockingQueue的情况下,将仅创建10个节点-此处的容量用作创建具有最大条目限制的所谓绑定队列的限制(在多线程环境中,可能是方便,以免出现内存不足的情况。