1. 程式人生 > >記憶體優化的解決方案(最全面的總結!如何合理的使用記憶體)

記憶體優化的解決方案(最全面的總結!如何合理的使用記憶體)

       由於Android應用的開發語言為Java,每個應用最大可使用的堆記憶體收到Android系統的限制,通常分配給每個應用程式的記憶體大小為:16M~48M,而如果試圖申請的記憶體大於當前的可用堆記憶體,就會導致OOM異常。所以,為了避免出現記憶體洩漏,我們需要合理的使用記憶體,以此來減少記憶體佔用。那麼,如何合理的使用記憶體?我總結了如下的解決方案:

1,注意資源的回收

       比如操作資料庫、建立輸入輸出流、定位等等,要在使用完即時的關閉流。

2,儘量少使用靜態變數

       因為靜態變數隨著類的載入而載入,它在系統裡的優先順序是很高的,會最後回收。所以,使用靜態變數可能導致該回收的物件沒能及時回收,記憶體無法及時釋放。

3,動態註冊監聽

       把一些只有顯示的時候才使用到的監聽放進程序內部,而不是放在清單檔案Manifest中去。

4,注意自己的程式邏輯

       合理的利用四大元件的生命週期,主動關閉使用的物件,比如在Activity的onDestroy()方法中,記得登出廣播,將監聽物件置為null等,而不是交給系統去決定。

5,注意大圖的載入

       在這裡得留意,避免因為圖片的載入導致的OOM(隨時留意我的部落格哈,近期我會上傳一些關於如何避免OOM異常的解決辦法,都是自己細心翻看原始碼的總結,非常詳細哦~!),如果載入的圖片很大,需要先手動去處理,可先在xml佈局檔案中設定圖片的顯示方式centerCrop,降低解析度,最好設定多種解析度格式的圖片,以減少記憶體消耗。   

6,減少使用動畫,或者適當減少動畫的幀數

相關推薦

記憶體優化解決方案(全面總結如何合理的使用記憶體)

       由於Android應用的開發語言為Java,每個應用最大可使用的堆記憶體收到Android系統的限制,通常分配給每個應用程式的記憶體大小為:16M~48M,而如果試圖申請的記憶體大於當前

Android效能優化:手把手帶你全面瞭解 記憶體洩露 & 解決方案

前言 在Android中,記憶體洩露的現象十分常見;而記憶體洩露導致的後果會使得應用Crash 本文 全面介紹了記憶體洩露的本質、原因 & 解決方案,最終提供一些常見的記憶體洩露分析工具,希望你們會喜歡。 掃碼檢視公眾號: 目錄 1. 簡介 即 ML (

Android 記憶體溢位解決方案(OOM) 整理總結

在最近做的工程中發現載入的圖片太多或圖片過大時經常出現OOM問題,找網上資料也提供了很多方法,但自己感覺有點亂,特此,今天在不同型號的三款安卓手機上做了測試,因為有效果也有結果,今天小馬就做個詳細的總結,以供朋友們共同交流學習,也供自己以後在解決OOM問題上有所提高,提前講下,片幅有點長,涉及的東西太

小菜鳥mysql優化解決方案

mysql優化根據小菜鳥的個人習慣,自己的編寫的一套MYSQL優化方案,感覺還是有點兒菜,望大家諒解,不足之處,請大神們互動!#mysql優化解決方案#公共參數默認值:max_connections = 151#同事處理多大連接數,推薦設置最大連接數是上限連接數的80%左右sort_buffer_size =

Spark記錄-Spark性能優化解決方案

let .text 並行 alloc lte 知識 enabled ida 並發執行 Spark性能優化的10大問題及其解決方案 問題1:reduce task數目不合適解決方式:需根據實際情況調節默認配置,調整方式是修改參數spark.default.paralle

Presto記憶體優化解決報錯Max query memory per node cannot be greater than the max query total memory per node

如下圖: 跑一個SQL發現超過了官網給出的預設記憶體,這裡需要進行優化。 修改邏輯如下: 修改jvm.config 檔案與 config.properties檔案 內容如下: jvm.config檔案 config.properties檔案

CAS 單點登出 loginout 解決方案 -- 靠譜的方案,不是抄的--還是不靠譜大家不要抄了

mmp,從11年開始用cas,但是總是在退出的時候掉鏈子,各種掉線子 從2.x版本開始用現在都4.2.7版本都沒解決這個退出掉鏈子的事情,於是自己看原始碼解決了此問題。     cas 預設的基於 httpclient http 通知的,通知的時候,服務端給客戶端發一個x

HDU 3969 Hawk-and-Chicken(dfs+tarjan縮點優化,網上詳細解析

Hawk-and-Chicken Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4170 &nb

Android中APP應用冷啟動黑白屏原因 優化解決方案

冷啟動 前言 應用啟動 冷啟動流程 問題原因 解決方法 優化 前言 做過APP開發,尤其是複雜專案的同學應該會經歷過APP在桌面點選冷啟動的時候,你以為會順利開啟應用首頁,但是出現在你眼前的

常見的 Java 記憶體溢位解決方案

一、 java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢位 JVM 在啟動的時候會自動設定 JVM Heap 的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)不可超過實體記憶體。可以利用 JVM提

eclipse除錯之edit source lookup path解決方案----本人測試可行

原文地址::https://blog.csdn.net/zkn_cs_dn_2013/article/details/48731133   在開發一個新專案時,由於新專案使用的是ant編譯和打包的方式,導致debug啟動tomcat之後無法找到原始碼進行除錯,經研究,個人的解決方案

Jmeter報記憶體溢位解決方案

描述:wimdows環境,做上傳圖片介面測試,涉及圖片合成和上傳,圖片採用base64編碼。每1s啟動200執行緒的時候,Jmeter報記憶體溢位錯誤。 解決方案: 1、修改jmeter.bat: set HEAP=-Xms256m -Xmx256m 改為: se

MySQL千萬級大表優化解決方案

MySQL千萬級大表優化解決方案 非原創,純屬記錄一下。 背景 無意間看到了這篇文章,作者寫的很棒,於是乎,本人自私一把,把乾貨儲存下來。:-) 問題概述 使用阿里雲rds for MySQL資料庫(就是MySQL5.6版本),有個使用者上網記錄表6個月的資料量近2000萬,保留最近一年的資料量達到

swap記憶體不足解決方案 Torch: not enough memory: you tried to allocate 0GB. Buy new RAM!

執行lua程式時報錯: 此問題是由於記憶體不足引起的,可採用分配虛擬記憶體的方式進行解決。 解決方案: 1.首先用命令free檢視系統內 Swap 分割槽大小 free -m 可以

Java記憶體洩漏解決方案

記憶體洩露:     是指在程式執行過程中會不斷的分配記憶體空間,那些不再使用的記憶體空間應該即時回收它們,從而保證可以保證系統可以再次使用這些記憶體。如果存在無用的記憶體沒有被收回來,那就是記憶體洩露。  說明: 對於陣列的操作,堆和棧的操作需要慎重的考慮是否存在記憶體洩露

敏捷專案管理流程-Scrum框架總結

會議目的 •該會議的工作以分析為主,目的是要詳細理解終端使用者到底要什麼,產品開發團隊可以從該會議中詳細瞭解終端使用者的真實需要。在會議的結束,團隊將會決定他們能夠交付哪些東西。 •產品負責人在會前準備:條目化的需求(使用者故事),優先順序排序,最近1~2個迭代最希望看到的功能。會前準備至關重要,可幫助產品

小程式video層級過高 解決方案之------- cover-view

在小程式用應用video map等元件時會發現由於這些元件層級過高會覆蓋到我們的導航欄!即使我們設定了定位給z-index 9999, 但是在真機測試時依然會失效!那麼就要用到元件cover-view 用cover-view寫導航欄就可以覆蓋到video上面了!但是有幾個小坑要注意! 1

VUE SSR記憶體洩露解決過程和經驗總結

先上JS記憶體洩露的幾個常見原因 1.全域性變數引起的記憶體洩漏。2.閉包引起的記憶體洩漏.3.dom清空或刪除時,事件未清除導致的記憶體洩漏 node方面的記憶體洩露也基本差不多, 處理過程瞭解到的VUE方面的記憶體洩露的原因 1.計算屬性無返回情況下,導致的異常 vue高版本已修復.2.引用第三方

Android效能優化解決方案

Android開發做久了,你會發現很多APP出現記憶體洩漏,卡頓,載入遲緩等問題,這時你會細細體味出這樣的APP其實很一般,這說明我們也走向深度開發中,技術實力也提高了很大一部分,以下是我常見的一些記憶體洩漏問題以及優化方案. 一,記憶體洩漏 記憶體洩漏是指

用前端效能優化解決方案彌補CDN的不足

     CDN通過將資源儲存在更接近使用者的位置,縮短到伺服器的往返行程,加快頁面載入時間來解決效能問題。WPO解決方案,如Radware的FastView,則在前端進行效能提升處理,使頁面更有效地呈現在瀏覽器中。 “我已經使用了內容交付網路(Content Delive