【c# – 我试图跟踪内存泄漏,它是否符合我的要求?】教程文章相关的互联网学习教程文章

c#-Silverlight Toolkit图表组件中可能的内存泄漏-帮助!【代码】

背景: 我一直在监视应用程序中使用2009年11月发行的Silverlight Toolkit图表组件,该应用程序每10秒钟左右更新一次多个折线图. 每个图表都有一个与ObservableCollection的绑定. DataValuePair是仅包含两个属性(DateTime和int)的简单类.在向集合中每次添加DataValuePair时,都会删除经过特定时间点的项目(即,每个集合中始终有< 50个DataValuePair对象).问题:内存不断增加.在WinDbg中,我可以看到DataValuePair对象(甚至是从Observabl...

C#-证书内存泄漏【代码】

我正在使用.NET 3.5. 创建对X509Certificate的引用时遇到内存泄漏.我正在使用ANTS事件探查器来分析结果,并且专用字节在增加,而堆中的字节保持静态(指示由于未托管代码而导致的内存泄漏). 我正在使用CRYPT32 dll管理证书.我打开对证书存储的引用以获取作为内部指针(intptr)的存储句柄.然后,我使用此商店处理程序在商店中找到证书(本地保存).拥有证书后,我将关闭证书存储并将证书返回到调用程序.我在certclosestore中使用标志0,该标志...

c#-调查内存泄漏-承诺内存增长-堆很好

我正在调查C#/ WPF / .NET 4.51应用程序中可能的内存泄漏. 启动后以及分配的内存超过顶部数小时后,我直接为应用程序制作了快照. 我使用VisualStudio的进程转储工具检查了托管堆实例.一切看起来都很好. 在WinDbg中打开转储似乎可以确认这一点,因为堆和堆栈以我期望的方式增长(50MB)(左:第一个转储,右:最后一个转储): 令我烦恼的是,提交的页面的大小增长了很多(左:第一个转储,右:最后一个转储): 同样,VMMap将这个巨大的提交块显...

c#-LuaInterface内存泄漏问题【代码】

我发现我在C#/ Lua LuaInterface项目中存在严重的内存泄漏.我用C#编写了一个简单的测试函数,该函数每0.5秒从Lua循环调用一次.我看到Lua的内存使用量在每个循环中都在增加.我最新的C#辅助代码是public LuaTable testMemTable(){LuaTable tabx = m_lua.GetTable("tabx");if (tabx != null){tabx.Dispose();tabx = null;GC.Collect();GC.WaitForPendingFinalizers();}m_lua.NewTable("tabx");tabx = m_lua.GetTable("tabx");for (int ...

c#-无法解释的内存泄漏与Marshal.StructureToPtr【代码】

我正在开发一个涉及通过C/C++LR包装器从本机C到C#互操作的应用程序. 我在执行以下操作时遇到了麻烦,这会导致内存泄漏:MyObject data = (MyObject)Marshal.PtrToStructure(ptr, typeof(MyObject)); Marshal.StructureToPtr(data, ptr, false);(注意:我意识到我目前实际上并未在为“数据”做任何事情,所以这是多余的.) 内存使用率持续上升,直到由于系统内存不足而使应用程序崩溃.当我删除此代码时,这不会发生.它不是垃圾收集器,因为...

c#-探查器图上的“非托管内存”.这是内存泄漏指示吗?

在剖析应用程序的内存使用情况时,我已经遇到了以下图表: 如您所见,在“快照1”行之前,非托管内存大约占已使用内存的一半.然后,在“快照1”和2分55秒(请参阅下面的时间线)之后,我强制执行垃圾收集. 如我所料,第2代主要是收集的,但是未托管的内存没有释放,现在它可以容纳大约2个.总已用内存的2/3. 我不知道在这种情况下“非托管内存”是什么意思.这是带有某些WinForms / GDI互操作的WPF应用程序.我敢肯定,所有应该处置的东西都已处置...

c# – Web应用程序中IronPython内存泄漏的问题【代码】

有没有人成功地让IronPython在Web环境中无问题地运行?我遇到了一些问题. 第一个问题,我实际上并没有运行任何特定于IronPython的脚本,我正在实现Pygments库,因此我可以获得服务器端语法突出显示.该库大约有20个文件. 除了最新的IronPython版本无法将脚本编译成DLL(由于this issue)之外,我确实通过将所有文件和依赖项复制到我的bin文件夹来成功运行. 问题是,我去看看我的w3wp.exe进程在进行突出显示时是如何做的,并注意到一些showst...

c# – 我们如何检测COM Interop应用程序中的内存泄漏?

什么是使用COM互操作的C#winform应用程序检测内存管理问题的最佳方法.引用了COM程序集,其方法用于许多计算和事务. 是否有任何工具可以识别加载到内存但未卸载的对象[interop].解决方法:COM组件的RCW只是一个托管类.任何半开发的.NET内存分析器都会向您显示任何无意中引用的内容.如果COM服务器本身泄漏,那么您将需要一个可以跟踪非托管内存的服务器.这总是需要拥有服务器的源代码,以便您可以准确找出泄漏的内容.并实际做一些事情. 关...

c# – Console.WriteLine和内存泄漏

我正在尝试减少我拥有的控制台应用程序的内存使用量.它应该连续运行几个小时,但似乎内存使用量逐渐增加.它确实使用多个线程,并做各种各样的事情,但我在某处读到,对Console.WriteLine进行大量调用也会导致内存峰值. 因为应用程序不断写入控制台,我认为可能是内存使用是因为这个.不幸的是,我无法轻松清除控制台,因为我正在将输出重定向到监视窗口.我暂时把它关掉了,但是记忆力还在增加,这告诉我还有其他需要解决的问题. 在我开始寻找...

c# – 我试图跟踪内存泄漏,它是否符合我的要求?【代码】

我有一个由多个组件组成的应用程序,每个组件编译成单个DLL,每个组件本身都运行多个线程.我有一个启动这些组件的shell程序. 我在CE 6环境中运行此应用程序,这是唯一的程序(除了系统之外).但是,随着时间的推移,当我查看任务管理器窗口时,我看到分配的内存使用量缓慢增加.怀疑我的程序可能有内存泄漏我执行以下操作. 我转到一个特定的组件并创建一个Timer对象,该对象每30分钟运行一次,调用以下代码:long memByte = GC.GetTotalMemory...

从C#COM dll到Delphi应用程序的回调会导致内存泄漏【代码】

我有一个用C#编写的COM服务器,以及用Delphi编写的COM客户端.我已经实现了一个简单而优雅的回调机制,它就像一个魅力.但是,FastMM4报告我的Delphi客户端正在创建内存泄漏.我已经将应用程序提炼到泄漏源自的本质.我的漏洞是由对象被引用计数的方式引起的(它永远不会变为零,所以永远不会被破坏),所以我试图理解为什么引用计数的工作原理是这样的,并且是因为我在实施中做错了. 我已经尽可能地减少了代码,但是在一个问题中包含它似乎仍然...

c# – XmlSerializer extraTypes内存泄漏【代码】

我正在开发一些应用程序,它使用extraTypes参数调用许多XmlSerializer构造函数.我发现,每次调用都会增加大约100KB的应用程序内存和2个描述符(有时更多).代码示例: 此代码增加了每个调用100KB和2个处理程序的应用程序内存while (true){Console.ReadLine();new XmlSerializer(typeof (object), new Type[] {});}此代码增加了43024KB和2004处理程序的应用程序内存for (var i = 0; i < 1000; i++){new XmlSerializer(typeof (object), ...

c# – ToolStrip内存泄漏【代码】

我一直在使用SWF-ToolStrip解决内存泄漏问题.据此http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=115600#已经解决.但它在这里看不到. 有谁知道如何解决这个问题?解决方法:这个问题似乎在.NET 3.5 SP1和.NET 4.0中仍然存在. 要重现该问题,您必须创建一个ToolStrip,其中包含的项目数多于它可以显示的项目,这会导致它创建溢出按钮.只有在实际单击溢出按钮时才会出现此问题.单击它会导致创建ToolS...

c# – Krypton(Winforms库)是否可能存在内存泄漏问题【代码】

我正在调试一个大的Winforms应用程序,它有一些内存泄漏问题.我使用.NET内存分析器,到目前为止,我已经能够找到一些泄漏并解决它们.但是现在我遇到了一个问题,我不确定是一个问题,如果它是一个我不知道如何解决它. 运行我的应用程序1分钟后(考虑到普通用户可以使用它几个小时不是很多),.NET内存分析器向我展示了Krypton Toolkit中大约100-200个不同控件的实例,如果我这个数字正在增加继续前进(它们永远不会被垃圾收集,因为看起来它们...

c# – 具有回调的代理上的内存泄漏【代码】

public delegate void SendCallbackType();public class SenderBase{SenderBase(){mySend = new SendCallbackType(SendData);mySend.BeginInvoke(SendCallback, null);}void SendData(){ // process / sending data}void SendCallback(IAsyncResult ar){ **SendCallbackType worker = (SendCallbackType)((AsyncResult)ar).AsyncDelegate;worker.EndInvoke(ar);**//Above code is mandatory ? Working fine with...