java - arrayBlockingQueue 和linkedBlockingQueue 中的内存消耗
问题描述
假设我将容量arrayBlockingQueue
和linkedBlockingQueue
两者都设为 100。我在每个元素中仅添加 10 个元素。
array
即使 90 个元素是空的,也会保持满容量吗?我的意思是它会有 10 个元素和 90 个空值吗?另一件事,在这种情况下会如何linked
表现?它会有 10 个还是 100 个节点?会有 90 个“空值节点”吗?
有人可以解释一下吗?他们在这种情况下表现如何?
解决方案
如果ArrayBlockingQueue
它会创建一个大小为 100 的数组。它将包含您插入的 10 个元素,其余的将是null
.
如果LinkedBlockingQueue
只创建 10 个节点 - 这里的容量被用作创建具有最大条目限制的所谓有界队列的限制(在多线程环境中,不超出内存可能很方便)。
推荐阅读
- node.js - 将 Node.js BOT 连接到 MS Azure SQL 数据库
- android - 通过意图在活动之间传递变量会引发 NullPointerException
- ios - Swift iOS -AshleyMills Reachability 每隔几秒就会打开和关闭 wifi
- asp.net - 没有“访问控制允许来源”的请求 - Angular 4 / ASP.net
- java - Java 使用 lambda 表达式重构数据结构
- swift - 下载状态在重新加载时消失
- google-sheets - 使用 query() 从另一个单元格动态提取月份值
- node.js - Hyperledger Fabric nodejs sdk 性能问题
- php - Symfony 4 命令行发送 JSON 字符串数组
- python - 如何在python中绘制时间序列数组并显示置信区间?