arrayBlockingQueue 和 linkedBlockingQueue 中的内存消耗

Memory consumption in arrayBlockingQueue and linkedBlockingQueue

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

即使 90 个元素为空,array 是否仍能保持满容量?我的意思是它会有 10 个元素和 90 个空值吗? 另一件事, linked 在这种情况下会如何表现?它会有 10 个还是 100 个节点?会不会有 90 'null value nodes'?

谁能给我解释一下?他们在这种情况下表现如何?

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

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