Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 蚂蚁分析器生成图形的理解_C# 4.0_Redgate_Red Gate Ants - Fatal编程技术网

C# 4.0 蚂蚁分析器生成图形的理解

C# 4.0 蚂蚁分析器生成图形的理解,c#-4.0,redgate,red-gate-ants,C# 4.0,Redgate,Red Gate Ants,我在我的应用程序中使用ANTS profiler分析内存usgae,它表明ExcelCell对象在第2代中占用了大量内存。应用程序正在使用EPPlus库生成excel文件 我附加了一些由该工具生成的图形我不知道如何进一步钻研以找出哪个对象持有引用并消耗内存。请提供有关如何进一步深入图表的建议。 问题是:此图再次指向同一对象。我想我没有正确使用这个工具 首先谢谢你-只有作为开发人员的你才知道这些Excell对象是否应该在内存中(例如,外部观察者如何知道这些对象是否是缓存对象)?您可以提供有

我在我的应用程序中使用ANTS profiler分析内存usgae,它表明ExcelCell对象在第2代中占用了大量内存。应用程序正在使用EPPlus库生成excel文件

我附加了一些由该工具生成的图形我不知道如何进一步钻研以找出哪个对象持有引用并消耗内存。请提供有关如何进一步深入图表的建议。

问题是:此图再次指向同一对象。我想我没有正确使用这个工具


首先谢谢你-只有作为开发人员的你才知道这些Excell对象是否应该在内存中(例如,外部观察者如何知道这些对象是否是缓存对象)?您可以提供有关是否已对这些对象调用Dispose的信息


第二,你看到它在哪里给你一个关于大型物体hap碎片的警告了吗?我会首先对此进行调查。

查看您拍摄的两张快照(从摘要屏幕),我缺少每个快照的工作流上下文,因此我将做出一些假设:

快照1:在创建Excel文件之前。 快照2:在您创建Excel文件并认为此操作已完成之后

首先,我建议您稍微调整一下您的工作流程,并执行以下快照

快照1:在创建Excel文件之前拍摄

快照2/3:取决于应用程序工作流;如果您创建数据(可以查看数据等),则根据此数据创建一个文件,然后在数据生成后拍摄快照,然后在文件创建后拍摄另一个快照

最终快照:拍摄一个最终快照-这是一个很好的做法,可以在完成工作流后更好地了解内存中的内容,因为它允许清除终结器队列

这里没有答案,因为从几个屏幕截图中很难做到这一点-只是建议-我不了解您的应用程序,也不知道您希望的内存使用情况,如缓存数据等

(a) 使用已选择分类引用的Instance Categorizor视图,您需要从顶部(仅)引用链开始,从右到左操作。再次做出假设(过于简单的假设)查看Excel库中的节点之外的内容,并查看引用它的类。 在这一点上,这将给您足够的时间在代码(b)中查找该引用,或者给您一个深入探索的起点(c)。(a) 如果您认为这个参考链(从右到左的路径)不值得追求,那么请向下移动到下一个参考链。使用实例Categorizor视图,您可以从右到左、从上到下工作

(b) 如果您有源代码,可以在VisualStudio中右键单击节点并浏览到该类。或者自己去那里:>

(c) 通过从(a)更深入地探索引用链,我的意思是使用链接“显示此路径上的实例”,然后根据显示的度量(大小、与GC根的距离)做出判断,选择类的实例进行更详细的探索。这将带您进入实例保留图,该图将更详细地显示该实例的引用链。注意这里的工具提示,彩色区域和节点类型都意味着各种各样的东西。请参阅下面我的链接

我认为从这个答案中可以清楚地看出,您可能会从AMP文档中获益,因为有很多东西需要学习,我只与您一起对应用程序进行了非常高的级别的演练,并且我已经做出了许多(远到多)的假设

有关帮助,请参见链接:


谢谢你的快速回复和解释。第一个图像只是一个摘要图像,它告诉我生成文件后,ExcelCell使用的是61 MB。接下来的3幅图像是对象图的一部分,对象图分为3幅(从右到左)。问题是,在我进一步(从右到左)钻取之后,它会显示相同的对象。我希望这个系统能指出最终的目标,即所有的参考资料。我只是想看看我的方向是否正确。谢谢你的回复。查看我附加的第一个grpah,它说最大的片段约为41.17MB(占可用内存的27.4%)。我想知道这是不是太多了?我应该担心这个数字吗?如果是,我的下一步行动是什么?谢谢你我现在能说的是——也许不是。不断观察随时间发生的事情。若内存并没有随着时间的推移而慢慢增加,那个么你们就没事了,但若内存确实增加了,那个么你们就开始考虑是否有内存泄漏。该工具将告诉您为什么对象仍在内存中(而它们可能不应该在内存中)。这与其说是一门科学,不如说是一门艺术;)