首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlockingQueue资源消耗

BlockingQueue资源消耗
EN

Stack Overflow用户
提问于 2017-03-09 03:38:54
回答 1查看 198关注 0票数 1

我刚刚开始了解如何使用BlockingQueue (数组或链接),我想知道队列如何影响资源(CPU、内存等)?

从多大的角度来看,一个完整的队列开始成为服务器的问题(不是线程的数量,而是比例)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-09 04:09:32

BlockingQueue的目的是使生产者与消费者脱钩。这通常是在消费者速度有限时选择的(通常是由于CPU、I/O吞吐量或只是为了减少生产者延迟)。

使用队列交换-关闭提高了生产者的速度,用于维护队列所需的内存和开销。

队列所需的内存通常近似于ItemCount * ItemSize (加上一些开销)。BlockingQueue实现确实提供了一个容量限制,以防止无限的增长;但是,如果达到了容量,生产者通常会出现严重的节流。

影响排队不平衡的主要因素是产品可生产的峰值率&产品消耗的稳定速率和峰值的数量(项目数)。通过计算这些值,您就可以知道在时间和#项中预计的积压量有多大。

有了现代计算机,可用的内存和可实现的队列大小都非常大。但是,大量的积压或大量未提交的业务数据可能非常不受欢迎。

一般而言,在下列情况下,应仔细审查排队解决办法:

  • 积压(在处理时间上)有可能大大超过原来的生产过程,而没有一个明确的包罗万象的程序边界来确保积压完成。
  • 可能会出现大量未提交的业务数据。
  • 积压将有可能接近可用堆的大小。

所有的速率和大小因素取决于您的具体应用程序。然而,这些是一些一般的原则,应该有助于分析和理解排队解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42686216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档