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導出函數存在問題,所以模塊和控制器對象的強化內存職責的實現轉移到實現過程中,接口定義難以強制約束。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章