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

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


- C#中的小数和百分数计算与byte数组操作 2023-06-04
- c# – 使用Entity Framework 6 Code First创建SQL视图 2023-11-14
- 仅在.NET Core 2.0运行时的Linux上缺少运行时存储库错误 2023-09-26
- C#事件(event)使用方法详解 2022-12-06
- SuperSocket封装成C#类库的步骤 2023-03-28
- 浅谈Visual Studio 2019 Vue项目的目录结构 2023-02-09
- C#实现学生成绩管理系统 2023-06-27
- c# – 检查SQL Azure中是否存在表 2023-11-14
- C# BitArray(点矩阵)转换成int和string的方法实现 2023-06-05
- 浅谈C# 抽象类与开闭原则 2023-03-04