WPF 記憶體洩漏優化經歷
最近公司有個CS客戶端程式,有個登入介面,有個程式的主介面,程式支援登出功能,但是在登出後,客戶端的記憶體一直以40M-50M的速度遞增,因此猜測,應該是WPF程式出現了記憶體洩漏。下面主要記錄優化記憶體洩漏的整個歷程:
1.使用VS2013的效能和診斷找到問題點
在VS2013選單分析-》效能和診斷,開啟的介面如下,並勾選記憶體使用率選項。
單擊開始,啟動程式,介面如下所示:
登入後,等待程式資源全部獲取後,單擊VS2013中拍攝快照
登出後,再次單擊拍攝快照按鈕
重複上述兩個步驟若干次後,關閉軟體,記憶體分析工具會自動進行分析,分析後的結果如下圖所示:
選擇快照報告資料檢視依據,託管堆和堆,我寫的程式中是在堆中發現快照2比快照會有40多M記憶體的上升,上面的圖片是優化後的。點選上升的記憶體,可以進入快照1和快照2記憶體的對比的表格:
從這個前後記憶體的對比中,找到是由於主介面的在登出時關閉,再次登入後,主介面重新建立顯示,裡面ocx的記憶體發生洩漏。
相關推薦
WPF 記憶體洩漏優化經歷
最近公司有個CS客戶端程式,有個登入介面,有個程式的主介面,程式支援登出功能,但是在登出後,客戶端的記憶體一直以40M-50M的速度遞增,因此猜測,應該是WPF程式出現了記憶體洩漏。下面主要記錄優化記憶體洩漏的整個歷程: 1.使用VS2013的效能和診斷找到問題點 在VS2013選單分析-》效能和診斷,開啟的
handler匿名內部類記憶體洩漏優化
直接在Activity中建立匿名內部類的Handler可能會造成記憶體洩漏 當你傳送的訊息沒有處理時,佔據著Activity的應用,當Activity頁面銷燬時,其引用還無法銷燬,產生了記憶體洩漏 解決辦法就是: 1,建立一個靜態的內部類Handler
記憶體洩漏優化---靜態變數導致記憶體洩漏
1、要不怎麼說static關鍵字要慎用呢?來看看下面這段程式碼,Context物件為靜態的,那麼Activity就無法正常銷燬,會常駐記憶體。 public class MainActivity extends Activity{ public static Conte
記憶體洩漏優化
目錄介紹: 01.什麼是記憶體洩漏 02.記憶體洩漏造成什麼影響 03.記憶體洩漏檢測的工具有哪些 04.關於Leakcanar
WPF 內存泄漏優化經歷
href 問題 clas 發現 單擊 全部 image 主界面 分享圖片 原文:WPF 內存泄漏優化經歷最近公司有個CS客戶端程序,有個登錄界面,有個程序的主界面,程序支持註銷功能,但是在註銷後,客戶端的內存一直以40M-50M的速度遞增,因此猜測,應該是WPF程序出現了內
handler機制的記憶體洩漏問題(handler + WeakReference優化Activity)
handler機制導致記憶體洩漏的原因: Activity在被結束之後,MessageQueue並不會隨之被結束,如果這個訊息佇列中存在msg,則導致持有handler的引用,但是又由於Activity被結束了,msg無法被處理,從而導致永
android防記憶體洩漏與記憶體優化的方法整理
記憶體洩漏 一、單利洩漏 存在記憶體洩露問題的一些程式碼片段像下面這樣: public class Util { private Context mContext;  
記憶體洩漏與優化分析指南
前言 在android開發中,我們都或多或少的會遇到一些記憶體洩漏的問題,雖然大都知道哪些情況會導致記憶體洩露,但是還是不可避免的會遇到類似的問題,因此,知道如何去查詢記憶體洩露就顯得非常重要了。本篇和大家分享下如何進行記憶體洩漏的定位分析,以及對記憶體佔用的優化分析。相信大家看了之
Java動態編譯優化——ZipFileIndex記憶體洩漏問題分析解決
一、前言: 前幾天解決了URLClassLoader記憶體洩漏的問題,但是解決問題就像剝洋蔥,剝去了外層,內層 問題又暴露出來了。當URLClassLoader記憶體洩漏解決, 需要解決的就是ZipFileIndex記憶體洩漏的問題了,而且這個問題折騰了我2天半的時間。 URLClass
Java動態編譯優化——URLClassLoader 記憶體洩漏問題解決
一、動態編譯案例 要說動態編譯記憶體洩漏,首先我們先看一個案例(網上搜動態編譯的資料是千篇一律,只管實現功能,不管記憶體洩漏,並且都恬不知恥的標識為原創!!) Java URLClassLoader 動態編譯案例:https://blog.csdn.net/huangshan
android效能優化——記憶體洩漏
在專案初期階段或者業務邏輯很簡單的時候對於app效能之一塊沒有太多感覺,但是隨著專案版本的迭代和專案業務邏輯越來越大,越來越複雜的時候,就會逐漸感覺到app效能的重要性,所以在專案初期階段時,就要有app效能這一意識,也便於專案後期的版本迭代和業務擴充套件;這裡所提到的效能優化問題是:記憶體洩漏
Android效能優化篇之記憶體優化--記憶體洩漏
文章目錄 介紹 什麼是記憶體洩露 android中導致記憶體洩漏的主要幾種情況 1.單例模式 2.使用非靜態內部類 3.使用非同步事件處理機制Handler 4.使用靜態
Android記憶體優化—記憶體洩漏、記憶體抖動、記憶體溢位
記憶體洩漏 當某些物件不再被程式所使用,但是這些物件仍然被某些物件所引用著,進而導致垃圾收集器不能及時釋放它們。 記憶體洩露 指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體。 解決辦法:在不需要的時候及時釋放掉資源 記憶體抖動 記憶體抖動 指記憶體頻繁地分配和回
記憶體優化(二)如何避免記憶體洩漏
文章目錄 一、不同生命週期導致的記憶體洩漏 解決辦法 二、非靜態內部類持有物件導致的記憶體洩漏 1. 非靜態內部類呼叫外部類的方法的 2. 內部類是如
Andorid效能優化(三) 之 如何定位記憶體洩漏
1 定位記憶體洩漏工具 正所謂工欲善其事,必先利其器。定位記憶體洩漏,可以藉助目前比較流行的一些工具來幫助發現和定位問題,下面我們就來看看這些工具。 1.1 Memory Profiler Android Studio 3.0 採用全新的Android Profiler視窗取代&nb
Andorid效能優化(二) 之 記憶體洩漏場景介紹
1 相關概念 1.1 記憶體洩漏 記憶體洩漏是指程式在向系統申請分配記憶體空間後,也就是說new了物件後,在使用完畢後沒有對其進行釋放。結果導致一直佔據該記憶體單元。簡單的說,在C/C++語言中,如果向堆中分配了記憶體(new了物件)後,沒有對其進行釋放掉(沒有delete物件),那就是
記憶體洩漏與排查流程——安卓效能優化
前言 記憶體洩漏可以說是安卓開發中常遇到的問題,追溯和排查其問題根源是進階的程式猿必須具備的一項技能。小盆友今天便與大家分享一下這方面的一些見解,如有理解錯誤或是不同見解,可以於評論區留言我們進行討論,如果喜歡給個贊鼓勵下吧。 篇幅較長,可以通過目錄尋找自己所需瞭解的吧 目錄 1、JAVA記
Android 效能優化之記憶體洩漏檢測以及記憶體優化(中)
Android 記憶體洩漏檢測 通過上篇部落格我們瞭解了 Android JVM/ART 記憶體的相關知識和洩漏的原因,再來歸類一下記憶體洩漏的源頭,這裡我們簡單將其歸為一下三類:自身編碼引起由專案開發人員自身的編碼造成;第三方程式碼引起這裡的第三
LeakCanary 記憶體洩漏 監測 效能優化 簡介 原理 MD
Markdown版本筆記 我的GitHub首頁 我的部落格 我的微信 我的郵箱 目錄 簡單使用 A memory leak detection 記憶體洩露檢測 library for Android and Java. A small leak
Android記憶體洩漏監控和優化技巧總結
前言對於Android平臺的應用程式來說,記憶體優化一直是個熱門話題,與傳統PC應