gpt4 book ai didi

c# - 查找所有出现的对象实例化

转载 作者:行者123 更新时间:2023-11-30 16:10:19 25 4
gpt4 key购买 nike

我正在开发一个 C# Mono 项目(在 Unity3D 中),它使用旧版本的垃圾收集器。内存泄漏对我来说是一个令人不快的警钟。

因此,我尽可能多地进行优化:像瘟疫一样避免 Linq、回收集合等。

我想知道的是 - 是否有一种工具可以让我知道我正在实例化新对象的所有位置?

我已经能够为 new List 这样的东西进行 grep,这很好,但是如果我想将搜索扩展到 new 我也可以获得值类型,这我想忽略。

我正在使用 MonoDevelop、Visual Studio 2013 和 Resharper。

最佳答案

JetBrains 为 ReSharper 发布了一个相对较新的小插件,可以静态分析您的分配和装箱代码 - ReSharper Heap Allocations Viewer .它可能正是您正在寻找的。我们在垃圾收集、内存使用和性能方面遇到了问题,这些问题与性能关键区域中 LINQ 的过度分配和过度使用有关。正如您也发现的那样,可能很难追踪这些额外的分配。当我们进行重构以减少分配时,这个插件确实很有帮助,我们一直使用它来防止新代码中过度使用内存。

基本上,它会在检测到本地对象分配的任何地方添加下划线和解释,例如:

enter image description here

它还会标记 LINQ 语句、迭代器和委托(delegate)的分配以及由委托(delegate)引起的分配。

您可以从 ReSharper Extension Manager 安装它 - 只需搜索“堆分配查看器”。

关于c# - 查找所有出现的对象实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com