c# – 在第三方库中调用麻烦的GC.collect()
在分析我的应用程序(C#,.NET 4)时,我注意到我正在使用显式调用GC.Collect()的第三方库.这是非常烦人的,因为它有时会对我的应用程序性能产生巨大的影响,因为对这个库的一些调用最终会出现巨大的循环:在GC.Collect帐户中花费的时间超过总执行时间的80%.
当然,我向库维护者报告了这种行为(lib不是开源的),但是当他们正在使用新版本时,我想优化我的应用程序.我能做什么? 我试图通过将GCSettings.LatencyMode设置为GCLatencyMode.LowLatency来配置GC(当然这只是在执行库调用期间),但是无效.我宁愿避免我的过程. 有任何想法吗? 解决方法
有两条路可以采取,首先是自己修补,第二个是通知图书馆的开发者(提交错误报告).
自己修补是很容易的,得到RedGates Reflector与Reflexil AddIn和补丁库.你也可以得到DotNet IL Editor,这基本上是一样的,但是FLOSS. “补丁自己”的方法的问题是它有缺点: >未来版本的库也需要修补.所以你最好记录你做了什么. 您可以做的另一件事是向图书馆的原始开发人员提出错误.确保您没有嗅到它,而是提供有用的资源,如GC上的MSDN文章和测试应用程序以及显示问题的分析器的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |