resource leak!!
去年开发伊始, 大家都特别注意泄漏问题.因为手头的试验数据只有几MB,程序员每次测试也不超过50个操作(说多了,我每次F5后, 就操作3/5下,呵呵).
今年三月, 测试小阿妹一登场, webgis一上线, 牛鬼蛇神都出来捣乱了!
上班不到一小时, 测试的小阿妹报告--地图显示变慢了;
两个小时后, MM报告--太慢了!
午饭, 睡醒后, MM急报--系统死翘翘了!
我狂奔过去, 一看任务管理器, LLD, 内存才用50MB嘛, 没啥大不了的啊, CPU也是<5%啊!
内存没吃多少, CPU也没占用, 咋个回事??啥把俺的程序给搞瘫了?!
再一看, 嘛儿这么多阿? 1K多个?? GDI对象!!!!
快去 baidu, 有大侠说, 一个proccess中, 最多9999个, 可是, 我也没到啊!
再想想, 我都用甚么GDI句柄了----PEN BRUSH FONT ICON HDC HWND......
突然发现, 用了HBITMAP, 这个东东可不是简单的GDI对象啊,需要好大一块内存耶! 而且, 这块内存,操作系统有限制, 不是无限申请!!
立刻开始人肉搜索: 找出所有使用GDI对象的地方, 主要是Symbol-->Draw(), MapLayer-->Draw() Map-->Draw()这三个关键函数体.
发现了一些GDI对象在创建后, 遇到非正常情况函数执行中途退出了, 未能在函数尾端销毁GDI对象, 嘿嘿...
痛啊, 决定立刻把这种痛惨烈滴在<<XXXXX编码规范>>中描述, 让今后来的小弟免得受苦.
去年开发伊始, 大家都特别注意泄漏问题.因为手头的试验数据只有几MB,程序员每次测试也不超过50个操作(说多了,我每次F5后, 就操作3/5下,呵呵).
今年三月, 测试小阿妹一登场, webgis一上线, 牛鬼蛇神都出来捣乱了!
上班不到一小时, 测试的小阿妹报告--地图显示变慢了;
两个小时后, MM报告--太慢了!
午饭, 睡醒后, MM急报--系统死翘翘了!
我狂奔过去, 一看任务管理器, LLD, 内存才用50MB嘛, 没啥大不了的啊, CPU也是<5%啊!
内存没吃多少, CPU也没占用, 咋个回事??啥把俺的程序给搞瘫了?!
再一看, 嘛儿这么多阿? 1K多个?? GDI对象!!!!
快去 baidu, 有大侠说, 一个proccess中, 最多9999个, 可是, 我也没到啊!
再想想, 我都用甚么GDI句柄了----PEN BRUSH FONT ICON HDC HWND......
突然发现, 用了HBITMAP, 这个东东可不是简单的GDI对象啊,需要好大一块内存耶! 而且, 这块内存,操作系统有限制, 不是无限申请!!
立刻开始人肉搜索: 找出所有使用GDI对象的地方, 主要是Symbol-->Draw(), MapLayer-->Draw() Map-->Draw()这三个关键函数体.
发现了一些GDI对象在创建后, 遇到非正常情况函数执行中途退出了, 未能在函数尾端销毁GDI对象, 嘿嘿...
痛啊, 决定立刻把这种痛惨烈滴在<<XXXXX编码规范>>中描述, 让今后来的小弟免得受苦.