首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高速率的对象创建/销毁-垃圾收集器太晚,导致慢速下降x64

高速率的对象创建/销毁-垃圾收集器太晚,导致慢速下降x64
EN

Stack Overflow用户
提问于 2013-09-07 13:07:46
回答 1查看 89关注 0票数 1

我的应用程序需要缓冲大约300兆b通过高速相机进入的图像。有一个队列,其中处理最老的图像,并添加新的图像。

由于这种循环性质,许多对象正在被创建和处理。我正在使用ConcurrentQueues来处理所有这些。

应用程序的性能很好,但是一旦使用了12 to的系统内存,它就会退化,只有这样,垃圾收集才会将内存负载降低到300 to左右。

我在上面运行了蚂蚁内存分析器,似乎没有任何漏洞。

将垃圾收集称为这里的一个选项?

此外,我还想要重用字节数组来存储图像,但这将是一次相当的重写,只有在其他部分失败时,我才会遵循该方法.

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-09-07 13:37:40

调用GC.Collect的主要缺点是您可能会消耗比您需要的更多的CPU。您还会过早地将对象提升到更高的世代。

在您的情况下,您可以安全地进行CPU/内存折衷。

还可以考虑限制进程可以使用的内存量。Windows可以对作业对象施加这样的限制。您可以将进程登记到有限的作业中,Windows将拒绝CLR内存。然后,CLR将收集空间以腾出空间。

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

https://stackoverflow.com/questions/18673612

复制
相关文章

相似问题

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