記一次 .NET 某工控視覺軟件 非托管泄漏分析( 四 )

可以看到第一塊 size= 0x1000040 byte = 16M 的內存是 HalconDotNet 分配的,接下來我們多抽幾個,或者用腳本來歸納一下 , 發現有大量的 88M 內存占用,大體上歸為兩類:

  1. C# 代碼分配未釋放:

記一次 .NET 某工控視覺軟件 非托管泄漏分析

文章插圖
  1. 內部代碼:

記一次 .NET 某工控視覺軟件 非托管泄漏分析

文章插圖
最后就是把這個結果給了朋友,讓朋友看下用 !ip2md 顯示出來的托管方法,為什么沒有釋放,是不是漏了 。
三: 總結這個dump可以看出是因為對 halcon  做了一套 DotNet 版的封裝上出現了一些瑕疵,這個 dump 的難點在于當 !heap 擴展命令失效的情況下 , 如何通過純手工的方式把 NTHeap 剝離的明明白白 。
【記一次 .NET 某工控視覺軟件 非托管泄漏分析】

推薦閱讀