不要通過終止程序的方式清理記憶體

2021-09-09 03:02:26 字數 768 閱讀 6248

通過終止程序來清理記憶體的方案是不合適的,理由如下:

1、android

有自身的程序和記憶體管理機制,其設計規範是要保證程式盡可能快地啟動,這就要求程式退出後仍然占用記憶體儲存資料;

2、android

的記憶體管理策略保證在新程式載入時有足夠的記憶體,當記憶體不足時會自行關閉優先順序低的程序來釋放記憶體;

3、程序資料長期快取在記憶體,對於 android 來說不是缺陷,而是優勢,它盡可能地確保程式的啟動質量以提公升使用者體驗,人們長期被強迫症困擾,一直誤以為大量占用記憶體是低效的表現,這與人們長期使用桌面系統不無關係;

4、我們的另乙個誤區是,占用記憶體耗電,其實不然!真正耗電的幕後推手是 cpu,反覆清理記憶體需要cpu反覆地工作,所以清理記憶體反而耗電;

網上乙個形象的比喻

:你在圖書館查資料,一種方案是把可能需要的資料全部從書架上取下來放到桌上,可能會有冗餘,但不必經常去書架取書;另一種方案,書桌上只放當前正在查閱的資料,查完馬上放回書架,這樣雖然書桌上很乾淨,但你需要反覆從書架上取書放書。這裡書就好比記憶體,取書放書的動作好比 cpu 的工作。顯然第一種方案更加高效和輕鬆。

一些靠譜的資料:

闡述為什麼不需要終止程序來釋放記憶體的原因

兩位谷歌工程師的建議:

romain guy

dianne hackborn :

強烈反對使用 system.exit() 來終止程式,請不要如此設計你的 android 應用

程序終止的方式

程序有5種正常終止及3中異常終止方式。5種正常終止方式具體如下 1 在main函式內執行return語句。等效於呼叫exit。2 呼叫exit函式。此函式由isoc定義,其操作包括呼叫個終止處理程式,然後關閉所有標準i o流等。3 呼叫 exit或 exit函式。isoc定義 exit,其目的是為程...

此函式通過傳入的程序ID來終止 殺死 程序

這個函式可以用來終止或者說殺死乙個程序,它不會留給程序及其所有執行緒清理的時間,系統會馬上終止 殺死 這個程序的所有執行緒,致使程序終止。在使用此函式前我們必須要呼叫openprocess函式來獲得我們要終止 殺死 程序的控制代碼,並且要獲得程序的process terminate許可權。函式原型 ...

簡述程序的啟動 終止的方式以及如何進行程序的檢視。

簡述程序的啟動 終止的方式以及如何進行程序的檢視。1 手工啟動 使用者在輸入端發出命令,直接啟動乙個程序的啟動方式。可以分為 前台啟動 直接在shell中輸入命令進行啟動。後台啟動 啟動乙個目前並不緊急的程序,如列印程序。2 排程啟動 系統管理員根據系統資源和程序占用資源的情況,事先進行排程安排,指...