首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

Java ME 記憶體洩漏問題:圖片與聲音資源釋放最佳實踐

     編輯:J2ME

前言

J2ME 若處理不當資源建立/釋放,會出現類似 C/C++ 的記憶體洩漏:可用記憶體越來越少。最常用資源為圖片與聲音。

圖片資源管理原則

每個圖片資源對應一個專屬變數,勿重複使用變數載入不同圖片。

// 正確:各圖片獨立變數
Image pic1, pic2, pic3, pic4;
if (pic1 == null) pic1 = Image.createImage("/1.png");
if (pic2 == null) pic2 = Image.createImage("/2.png");
// 用畢釋放
pic1 = null; pic2 = null;
// 需要新圖片時,用新變數
if (pic3 == null) pic3 = Image.createImage("/3.png");

// 錯誤:重用變數載入新圖片
if (pic1 == null) pic1 = Image.createImage("/3.png"); // 干擾 GC 回收 pic1 原物件

重用變數會讓 GC 難以判斷原物件是否仍被引用,導致回收不乾淨。

聲音資源管理原則

  • 同樣採用專屬變數。
  • 釋放前必須停止播放:sound.stop(); sound = null;
  • 播放前先停止:if (sound != null) { sound.stop(); sound.start(); } 避免重複播放產生無法回收物件。

平台差異提醒

不同平台對聲音處理方式不同(參考 dba8.cn、Oracle-bbs),實作時需針對目標平台測試調整。

結語

嚴格遵循「一資源一變數、用畢歸零、播放前停止」三原則,可有效避免 Java ME 記憶體洩漏,穩定長時間運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved