记一次 .NET 某工控视觉软件 非托管泄漏分析( 四 )

可以看到第一块 size= 0x1000040 byte = 16M 的内存是 HalconDotNet 分配的,接下来我们多抽几个,或者用脚本来归纳一下 , 发现有大量的 88M 内存占用,大体上归为两类:

  1. C# 代码分配未释放:

记一次 .NET 某工控视觉软件 非托管泄漏分析

文章插图
  1. 内部代码:

记一次 .NET 某工控视觉软件 非托管泄漏分析

文章插图
最后就是把这个结果给了朋友,让朋友看下用 !ip2md 显示出来的托管方法,为什么没有释放,是不是漏了 。
三: 总结这个dump可以看出是因为对 halcon  做了一套 DotNet 版的封装上出现了一些瑕疵,这个 dump 的难点在于当 !heap 扩展命令失效的情况下 , 如何通过纯手工的方式把 NTHeap 剥离的明明白白 。
【记一次 .NET 某工控视觉软件 非托管泄漏分析】

推荐阅读