更多高质量干货:参见我的 GitHub: dotnetfly

一:背景

1. 讲故事

说实话,这篇dump我本来是不准备上一篇文章来解读的,但它有两点深深的感动了我。

  1. 无数次的听说用 Unity 可做游戏开发,但百闻不如一见。

  2. 游戏中有很多金庸武侠小说才有的名字,太赏心悦目了。


000000df315978a8    0          3   玉骨扇
000000df31597cd8    0          3   云龙枪
000000df31596d88    0          3   阴风爪
000000df315967a8    0          4   雪魂丝链
000000df31596ad0    0          4   乙木神剑
000000df31596040    0          3   星耀冠
000000df31595328    0          3   乌金锤
...

所以说这么好的一个dump,我得给它留下点什么。

好了,话说回来这个缘分起于上个月有位朋友说它的程序虚拟内存占用非常大,咨询如何解决,如下图:

先甭管是什么问题,多抓几个dump总不会错的,几经折腾后发了一个dump过来。

二: Windbg 分析

1. 到底是哪里的泄漏

分析内存方面的问题,还是那句话,一分为二看一下到底是哪一块的内存泄漏(托管还是非托管)。

先看一下进程总内存,使用 !address -summary 命令。


0:087> !address -summary--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                    458     7ffe`9e6a8000 ( 127.995 TB)          100.00%
Heap                                  48514        1`005fd000 (   4.006 GB)  72.51%    0.00%
<unknown>                              2504        0`2c6ad000 ( 710.676 MB)  12.56%    0.00%
Stack                                   504        0`2a000000 ( 672.000 MB)  11.88%    0.00%
Image                                   410        0`0a971000 ( 169.441 MB)   3.00%    0.00%
Other                                    18        0`001dc000 (   1.859 MB)   0.03%    0.00%
TEB                                     168        0`00150000 (   1.312 MB)   0.02%    0.00%
PEB                                       1        0`00001000 (   4.000 kB)   0.00%    0.00%--- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_PRIVATE                           51581        1`5130f000 (   5.269 GB)  95.36%    0.00%
MEM_IMAGE                               416        0`0aa6b000 ( 170.418 MB)   3.01%    0.00%
MEM_MAPPED                              122        0`05bce000 (  91.805 MB)   1.62%    0.00%--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_FREE                                458     7ffe`9e6a8000 ( 127.995 TB)          100.00%
MEM_COMMIT                            51465        1`1c741000 (   4.445 GB)  80.45%    0.00%
MEM_RESERVE                             654        0`45207000 (   1.080 GB)  19.55%    0.00%

从卦中得知 MEM_COMMIT=4.4G, 接下来再看下托管堆的内存占用,可以用命令 !eeheap -gc 命令。


0:087> !eeheap -gc
Number of GC Heaps: 1
generation 0 starts at 0x000000df3118dc48
generation 1 starts at 0x000000df3118b098
generation 2 starts at 0x000000df30fc1000
ephemeral segment allocation context: nonesegment             begin         allocated              size
000000df30fc0000  000000df30fc1000  000000df3178cae0  0x7cbae0(8174304)
Large object heap starts at 0x000000df40fc1000segment             begin         allocated              size
000000df40fc0000  000000df40fc1000  000000df410637b8  0xa27b8(665528)
Total Size:              Size: 0x86e298 (8839832) bytes.
------------------------------
GC Heap Size:            Size: 0x86e298 (8839832) bytes.

从卦中得知 GC Heap Size= 8839832 Byte = 8M,我去,才这么点,有点开玩笑哈!!!

记一次 .NET 某桌面奇侠游戏 非托管内存泄漏分析相关推荐

  1. 记一次 .NET 某智慧水厂API 非托管内存泄漏分析

    一:背景 1. 讲故事 七月底的时候有位朋友在wx上找到我,说他的程序内存占用8G,托管才占用1.5G,询问剩下的内存哪里去了?截图如下: 从求助内容看,这位朋友真的太客气了,动不动就谈钱,真伤感情, ...

  2. 记一次 .NET 某消防物联网 后台服务 内存泄漏分析

    一:背景 1. 讲故事 去年十月份有位朋友从微信找到我,说他的程序内存要炸掉了...截图如下: 时间有点久,图片都被清理了,不过有点讽刺的是,自己的程序本身就是做监控的,结果自己出了问题,太尴尬了

  3. 记一次 .NET 某外贸Web站 内存泄漏分析

    一:背景 1. 讲故事 上周四有位朋友加wx咨询他的程序内存存在一定程度的泄漏,并且无法被GC回收,最终机器内存耗尽,很尴尬. 沟通下来,这位朋友能力还是很不错的,也已经做了初步的dump分析,发现了 ...

  4. 记一次 .NET 某HIS系统后端服务 内存泄漏分析

    一:背景 1. 讲故事 前天那位 his 老哥又来找我了,上次因为CPU爆高的问题我给解决了,看样子对我挺信任的,这次另一个程序又遇到内存泄漏,希望我帮忙诊断下. 其实这位老哥技术还是很不错的,他既然 ...

  5. python 内存泄漏分析工具_记一次调试python内存泄露的问题

    这两天由于公司需要, 自己编写了一个用于接收dicom文件(医学图像文件)的server. 经过各种coding-debuging-coding-debuging之后, 终于上线了, 上线后心里美滋滋 ...

  6. 诛剑奇侠传java_诛剑奇侠传飞升版

    诛剑奇侠传飞升版是一款以东方仙侠为主题的热血竞技游戏,诛剑奇侠传最新版有多个角色可以运用,丰富的游戏场景还有大量的英雄技能让你欲罢不能,海量的游戏副本,多元化的游戏模式等你挑战,诛剑奇侠传飞升版带你去 ...

  7. 逆向工程之打造自己的仙剑奇侠

    众所周知,在国产RPG游戏里面,<仙剑奇侠传>是永恒的经典.发布近二十年以来,依旧话题不断.但是鲜有人对其进行逆向分析,只是听说多年之前曾有人为了探究其是否有隐藏剧情,从而采取了某种逆向分 ...

  8. 逆向工程第002篇:打造自己的仙剑奇侠

    众所周知,在国产RPG游戏里面,<仙剑奇侠传>是永恒的经典.发布近二十年以来,依旧话题不断.但是鲜有人对其进行逆向分析,只是听说多年之前曾有人为了探究其是否有隐藏剧情,从而采取了某种逆向分 ...

  9. 记一次electron开发桌面英语(自用,类歌词)

    记一次electron开发桌面英语(自用,类歌词) 晒一下自己的考试成绩单,不感兴趣可以跳过 制作初心 进入正题 功能 安装(略) 项目结构目录 package.json main.js index. ...

最新文章

  1. [Hadoop] Error: JAVA_HOME is not set
  2. 计算机基础知识与基本操作txt,计算机基础知识复习-20210707023705.pdf-原创力文档...
  3. PL/SQL程序设计 第一章 PL/SQL 程序设计简介
  4. Linux 7 关闭、禁用防火墙服务
  5. 案例展示自定义C函数的实现过程
  6. 用python爬取杭电oj的数据
  7. ORACLE数据泵还原(IMPDP命令)【转】
  8. 三目表达式 ---if--else的简写
  9. Word文档中去除EndNote格式
  10. JAVAWEB-NOTE01
  11. vuepress-theme-reco评论管理
  12. 公司股权分配的七大简明实操建议
  13. 加拿大政府正式为IT项目管理的成本估计作出规定
  14. numpy pandas matplotlib 学习笔记
  15. 简单的图书馆借/还系统——C++实现
  16. A - Oulipo(KMP算法经典)
  17. iMovie教程:如何将照片添加至iMovie剪辑中?
  18. 2019 为什么我们还会继续使用 PHP ?
  19. Paper中含有Type3的字体,需要修改为Type1字体
  20. 什么叫云原生应用?| 技术头条

热门文章

  1. Go 使用consul服务治理 rpc通讯
  2. 2022年湖南省临床执业医师考试二单元随机真题
  3. python 创建目录时间_python实现根据当前时间创建目录并输出日志
  4. 重新定义流媒体服务器
  5. 计算机专业考研2021,2021考研:计算机考研解析
  6. 追踪任务期间fMRI功能连接的空间动态
  7. BDD100K:大规模、多样化的驾驶视频数据集
  8. Java课程设计-基于Java Swing的学生信息管理系统-版本二
  9. VB 程序大揭秘(转载)用VB的不得不看的好东西!
  10. 100多个新媒体人实用网站