更多高质量干货:参见我的 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. 多目标跟踪:CVPR2019论文阅读
  2. MXNET源码中NDArray数据的获取和打印
  3. Alpha冲刺——day1
  4. 重温目标检测--YOLO v3
  5. 十分钟了解分布式计算:Petuum
  6. C/C++ strict-aliasing
  7. SpringMVC异常处理之分析和搭建环境
  8. [BuildRelease Management]Team City
  9. 二维码识别中面临的主要问题
  10. 使用Nodejs搭建server
  11. 述 SQL 中的 distinct 和 row_number() over() 的区别及用法
  12. Java中,native2ascii.exe 的使用(最简单说明)
  13. 常见的预设分栏包括_计算机应用基础_实训项目二Word综合应用
  14. web项目设计文档_web项目前后端分离模式下的权限设计方案
  15. css音乐播放器插件,jQuery MPlayer音乐播放器插件
  16. 2022年工作日节假日数据
  17. CentOS7.6腾讯云中域名的备案详细流程
  18. linux系统优点和缺点,Linux系统和Windows系统的各自的优缺点有哪些
  19. laravel框架基础知识
  20. 关于网页加载慢的一个解决方法——取消勾选【局域网设置】中的【自动检测设置】

热门文章

  1. SQL 压力测试实战
  2. 关于360与腾讯QQ之争 IT人士的看法
  3. 三天玩转win7,你也想?
  4. Xshell开多个会话和会话分屏
  5. SpringBoot 接口数据加解密
  6. Pytorch模型量化实践并以ResNet18模型量化为例(附代码)
  7. 入门行人重识别 尝试跑(郑哲东 简单行人重识别代码到88%准确率)过程
  8. linux打开udc端口命令,Openstack API常用命令
  9. 绩点 计算 html,GPA算法大全,教你怎么算GPA
  10. 修改db_create_online_log_dest_1