最近处理系统补丁描述文件,
linux下的漏洞补丁包以及依赖包,加起来大概有几十万个。
然后用list保存这些信息,list中还会包含子list。
我的原意是为了尽量减少内存占用,以及尽量最小时间的占用大内存,便手动使用swap() ,但只对主list使用,结果就造成了内存占用狂增!实在是画蛇添足!!!
有时间详细了解下swap(),真的是错误的使用,还不如不用!
<update:12.09号23:02>
这个问题,三周前就解决了吧,解决了以后,一直没有来更新文章!
1.核心问题,并不是出在上述问题,而是由于:解码模块中,有两处内存泄漏,非常明显的低级错误。这个模块,是我们公司的一个大牛提供的,一直没有怀疑它。简直浪费了太多的时间,查内存泄漏都查吐了。
具体表现:测试文件30MB,每处理一次测试文件,解码模块内部就会new一块30M的内存,完事儿后忘记delete。当外部频繁处理测试文件时,内存就会一直暴涨。
2.关于list的析构,最后的解决方案是,手动在 结构体的定义中,对析构函数override,以便让编译器及时释放内存。
总结:越大的问题,往往越是因为小的细节导致的。细心,对事物保持怀疑的态度,保持求知的渴望,保持对新知识的渴求。前人的知识总结,是很宝贵的,好好学习。