有没有人遇到过.net 非托管内存泄漏问题,想探讨一下。
1
skinny 2020-05-11 10:53:34 +08:00
要么是你自己的问题,要么是你用的库的问题,善用 IDisposable 接口和 using
|
2
Soar360 2020-05-11 11:26:06 +08:00
有一个工具叫 dotMemory,不会 sos 的话可以尝试下。
|
3
wanguorui123 2020-05-11 13:36:37 +08:00
没手动释放?
|
4
jiumingzhu 2020-05-11 17:06:43 +08:00
莫非用了别人的 dll,然后那个人没有释放?
|
5
yulitian888 2020-05-11 18:54:54 +08:00
非托管内存,泄露?
我遇到过一个情况刚刚好相反,非托管也会被 GC 胡乱回收,链接: https://www.v2ex.com/t/575061 非托管泄露我遇到过一次,是很多来年前做 WPF 的时候。因为 WPF 调用了 Dx9 的 COM 资源,老大难问题,无解。直到等了 N 年之后微软才给修复。 |
6
laball OP @Soar360 我用 windbg 分析过,托管内存不到 1G 多,非托管内存 7G 多,差距太大,已经很明显是非托管内存泄漏了。
|
7
laball OP @jiumingzhu 使用了 OpenPop,Lumisoft.Net 这两个库,都是以源代码形式,有做部分修改,主要功能是收取邮箱中的邮件;
|
8
Soar360 2020-05-13 09:03:09 +08:00 via Android
|
9
forgottencoast 2020-05-14 11:31:29 +08:00
@laball 用工具可以查看内存中存在的大对象,或者你也可以先用性能计数器看看统计数据。
|
10
laball OP @forgottencoast 已经用 WinDBG 看过了,托管内存 1G 左右,非托管内存 7G+,着实是非托管内存泄漏;
|