Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android內存管理-SoftReference的使用

Android內存管理-SoftReference的使用

編輯:初級開發

很多時候我們需要考慮Android平台上的內存管理問題,Dalvik VM給每個進程都分配了一定量的可用堆內存,當我們處理一些耗費資源的操作時可能會產生OOM錯誤(OutOfMemoryError)這樣的異常,android123觀察了下國內的類似Market客戶端設計,基本上都沒有采用很好的內存管理機制和緩存處理。

  如果細心的網友可能發現android Market客戶端載入時,每個列表項的圖標是異步刷新顯示的,但當我們快速的往下滾動到一定數量比如50個,再往回滾動時可能我們看到了部分App的圖標又重新開始加載,當然這一過程可能是從SQLite數據庫中緩存的,但是在內存中已經通過類似SoftReference的方式管理內存。

  在Java中內存管理,引用分為四大類,強引用HardReference、弱引用WeakReference、軟引用SoftReference和虛引用PhantomReference。它們的區別也很明顯,HardReference對象是即使虛擬機內存吃緊拋出OOM也不會導致這一引用的對象被回收,而WeakReference等更適合於一些數量不多,但體積稍微龐大的對象,在這四個引用中,它是最容易被垃圾回收的,而我們對於顯示類似android Market中每個應用的App Icon時可以考慮使用SoftReference來解決內存不至於快速回收,同時當內存短缺面臨Java VM崩潰拋出OOM前時,軟引用將會強制回收內存,最後的虛引用一般沒有實際意義,僅僅觀察GC的活動狀態,對於測試比較實用同時必須和ReferenceQueue一起使用。

  對於一組數據,我們可以通過HashMap的方式來添加一組SoftReference對象來臨時保留一些數據,同時對於需要反復通過網絡獲取的不經常改變的內容,可以通過本地的文件系統或數據庫來存儲緩存,希望給國內做App Store這樣的客戶端一些改進建議。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved