android 記憶體 舉例

2021-06-20 07:35:11 字數 839 閱讀 2039

一,有關static的記憶體問題。

首先先看乙個例子

public class mainactivity extends activity

@override

public void onbackpressed()

}

上面的例子,在第一次執行時,靜態變數test的值由false變成了true,當按back鍵退出程式後,再進入,test的值還是true,說明test並沒有被gc**。

當activity退出時,activity的靜態變數是存在的,因為靜態變數是屬全域性變數,靜態變數是整個應用程式的公共變數(即使你這個地方寫的是私有),所以activity消毀時,靜態變數是不會清除的。但當什麼時候才會清除呢,上面說過靜態變數是整個應用程式的,所以只有當各個應用程式的程序消毀時,靜態變數才會毀,所以以下寫法可以退出。

@override

public void onbackpressed()

那麼此時就引導出乙個有關記憶體方面的問題,如果有乙個靜態變數,持有了乙個耗資源的物件,那麼就算是activity退出,這個耗資源物件也不會被**,這就造成了嚴重的記憶體洩露。這個耗資源可以是context物件,這種問題隱藏的很深,不容易被發現。

public class mainactivity extends activity

textview.setbackgrounddrawable(mdrawable);

setcontentview(textview);

}}

上面就有記憶體洩露的情況。

Android效能優化篇 二 ,記憶體洩露的舉例分析

由於我能力有限,所以不敢稱這是部落格 部落格一般都具有分享性 這只是筆記,所以在寫的過程中我也會盡量描述的清楚些,希望對你有所幫助。當做個人歷程而已。記憶體洩露的根本原因 生命週期長的持有了生命周期短的引用。下面就介紹下,我們平時開發中常見的洩露例子。補充上篇知識 記憶體洩露是說,本該被gc 的記憶...

linux 記憶體共享舉例

三個檔案,乙個標頭檔案,乙個讀,乙個寫,用同乙個key值申請共享記憶體。ifndef shm com h define shm com h 1 define text sz 2048 struct shared use at struct kts endif shm write.c include ...

舉例 Android動態申請許可權

舉例 android自定義dialog 做出 確定 取消 的選擇 還是一貫的風格,直接上 android name android.permission.camera android name android.permission.change network state android name ...