C++性能系列之从内存泄露问题根本看狼性生存之道

从内存泄露问题根本看狼性生存之道

  1. 内存泄露问题微观上是程序员思维不缜密或者编码不细心的问题,宏观上是资源的重复利用和资源争用问题。解决内存泄露问题的根本是在有限的资源上有效且重复利用资源。软件增加硬件的重复利用次数,帮助降低企业生产成本,扩大收益。
  2. 利用有限的资源做无限的任务,不仅仅是一个计算机科学问题,而且是一个管理学问题。效率的本质是在达成目标的前提下降低成本。资源的重复使用是最基本有效的方法,而有效重复使用资源是一个管理学难题。人力资源的重复使用是企业管理问题,不能仅仅因为职员的某一个问题放弃不再使用(解雇),就像内存泄露问题不能扔掉当前正在使用的小内存条,去花更多的资金购买更大的内存一样。
  3. 狼的生存环境险恶,资源贫乏:没有其它生物主动为它提供生活所需,没有固定居住场所,没有容易获得的食物,没有货币用来和其它的生物进行资源交换,所得食物没有有效的长期保存方法,等等等等。它们永远在不停的争用资源(并行编程中的资源争用问题)。
  4. 孟子说:生于忧患,死于安乐。不仅仅是人,所有生物都有一个共性问题:惰性。何谓生物?物为何而生,如何而生?史是什么?作为灵长动物之首的人类,为何记录历史?(引用别人已有的论文成果)
  5. 内存泄露的问题,小环境有小环境的解决方法,大环境有大环境的解决方法。小环境的解决方法是:谁需要,谁申请,谁拥有,谁释放。那么大环境下呢?大并行编程的大环境下,如何掌握内存申请和释放的时机呢?(论点)
  6. 内存不可以跨模块管理,其中的一个原因是诊断内存泄露位置的大概范围的方法是通过增加模块这样的排除方法确定。
  7. 内存管理责任担档思想:确定负责内存管理职责的对象,以它为中心进行内存管理,其它对象专心于功能的实现。这样的类似团队管理的明确有内存管理责任的对象的内存管理思想是最好的思想。
  8. 小环境的解决方案是申请者负责释放,大环境下按业务逻辑和应用场景区分指针为两种类型指针:逻辑指针和数据指针。逻辑指针的引用者负责申请和释放它的内存,可以调用它的非const成员方法,数据指针相当于Java和C#的对象,它只是对object的引用,从类图设计之初就尽量让外部引用者只调用它的非const方法就可以实现功能。举例说明:A类型a对象的指针pa在它的某一个方法中生成B类型的b对象并管理它的指针pb,此时pa对pb拥有管理权,pb对pa的引用是数据指针,pb是pa的逻辑指针。
  9. 由于STL导出函数存在问题,所以模块和控制器对象的强化内存职责的实现转移到实现过程中,接口定义难以强制约束。

猜你喜欢

转载自blog.csdn.net/caoshiying/article/details/79221917
今日推荐