在剖析应用程序的内存使用情况时,我已经遇到了以下图表:如您所见,在“快照1”行之前,非托管内存大约占已使用内存的一半.然后,在“快照1”和2分55秒(请参阅下面的时间线)之后,我强制执行垃圾收集.如我所料,第2代主...

在剖析应用程序的内存使用情况时,我已经遇到了以下图表:
如您所见,在“快照1”行之前,非托管内存大约占已使用内存的一半.然后,在“快照1”和2分55秒(请参阅下面的时间线)之后,我强制执行垃圾收集.
如我所料,第2代主要是收集的,但是未托管的内存没有释放,现在它可以容纳大约2个.总已用内存的2/3.
我不知道在这种情况下“非托管内存”是什么意思.
这是带有某些WinForms / GDI互操作的WPF应用程序.我敢肯定,所有应该处置的东西都已处置.此外,也没有明确的平台互操作代码.其余的托管内存都可以.
这是内存泄漏指示吗?
如果是这样,在这里检测内存泄漏的方法是什么?
这很重要,我使用的探查器是JetBrains dotMemory.
解决方法:
dotMemory图表上的“已使用总量”是进程的私有工作集.进程可执行文件要求的内存是内存-不一定是实际使用的数量.它包括所有DLL和堆,但不包括内存映射文件(共享DLL).而且,没有办法知道它是属于可执行文件本身,还是属于链接库.这不仅是物理内存;它们可以分页到磁盘或备用页列表中(即不再使用,但也没有分页).
因此,除了托管CLR堆以外,非托管内存是私有工作集中的所有内容.通常,您没有简单的方法来更改纯.net进程的非托管内存量.并且在程序执行过程中大约是常数.
本文标题为:c#-探查器图上的“非托管内存”.这是内存泄漏指示吗?


基础教程推荐
- WPF实现倒计时转场动画效果 2023-06-27
- c#-DateTime.Now.ToString(“ M / d / yyyy h:mm tt”)在Windows 7中反转显示 2023-11-11
- c# – 如何启动新的PowerShell实例并在其中运行命令? 2023-09-18
- c#-使用单个设置在所有Windows窗体中设置相同的背景 2023-11-12
- C#实现接口base调用示例详解 2023-06-14
- WPF TextBox实现按字节长度限制输入功能 2022-11-22
- Unity实现图片生成灰白图的方法 2023-02-16
- 在c#中从Windows azure中删除blob 2023-09-19
- C#实现Word和ODT文档相互转换详解 2023-06-05
- c#之mysql三种带事务批量插入 2023-11-11