V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
laball
V2EX  ›  .NET

.net 非托管内存问题

  •  
  •   laball · 2020-05-11 10:31:49 +08:00 · 2806 次点击
    这是一个创建于 1662 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有人遇到过.net 非托管内存泄漏问题,想探讨一下。

    11 条回复    2020-05-15 00:20:46 +08:00
    skinny
        1
    skinny  
       2020-05-11 10:53:34 +08:00
    要么是你自己的问题,要么是你用的库的问题,善用 IDisposable 接口和 using
    Soar360
        2
    Soar360  
       2020-05-11 11:26:06 +08:00
    有一个工具叫 dotMemory,不会 sos 的话可以尝试下。
    wanguorui123
        3
    wanguorui123  
       2020-05-11 13:36:37 +08:00
    没手动释放?
    jiumingzhu
        4
    jiumingzhu  
       2020-05-11 17:06:43 +08:00
    莫非用了别人的 dll,然后那个人没有释放?
    yulitian888
        5
    yulitian888  
       2020-05-11 18:54:54 +08:00
    非托管内存,泄露?
    我遇到过一个情况刚刚好相反,非托管也会被 GC 胡乱回收,链接: https://www.v2ex.com/t/575061
    非托管泄露我遇到过一次,是很多来年前做 WPF 的时候。因为 WPF 调用了 Dx9 的 COM 资源,老大难问题,无解。直到等了 N 年之后微软才给修复。
    laball
        6
    laball  
    OP
       2020-05-13 00:46:07 +08:00
    @Soar360 我用 windbg 分析过,托管内存不到 1G 多,非托管内存 7G 多,差距太大,已经很明显是非托管内存泄漏了。
    laball
        7
    laball  
    OP
       2020-05-13 00:47:21 +08:00
    @jiumingzhu 使用了 OpenPop,Lumisoft.Net 这两个库,都是以源代码形式,有做部分修改,主要功能是收取邮箱中的邮件;
    Soar360
        8
    Soar360  
       2020-05-13 09:03:09 +08:00 via Android
    非托管内存泄露,以我的经验是发生在跨语言调用过程中,非托管申请的内存没有被 free 造成的。
    可以参看下↓

    https://www.coderbusy.com/archives/286.html
    forgottencoast
        9
    forgottencoast  
       2020-05-14 11:31:29 +08:00
    @laball 用工具可以查看内存中存在的大对象,或者你也可以先用性能计数器看看统计数据。
    laball
        10
    laball  
    OP
       2020-05-15 00:20:05 +08:00
    @forgottencoast 已经用 WinDBG 看过了,托管内存 1G 左右,非托管内存 7G+,着实是非托管内存泄漏;
    laball
        11
    laball  
    OP
       2020-05-15 00:20:46 +08:00
    @Soar360 Hold 不住,DMP 8G+,太大了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1340 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:43 · PVG 01:43 · LAX 09:43 · JFK 12:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.