手機內存以 KB 計,寫代碼如回 DOS 時代——必須「勒緊褲腰帶」。優化三大方向:代碼、圖片、第三方工具。
場景切換(遊戲→主菜單)時,舊邏輯對象若不手動置空,與新對象共存導致峰值內存溢出。GC 非實時,不可靠。
// 差
gameLogic = new GameLogic();
// 好
gameLogic = null;
gameLogic = new GameLogic();
工具:Runtime.freeMemory() 埋點監控剩餘內存。
// 差:瞬間存在兩個對象
obj = new HeavyObject();
// 好:先斷開引用
obj = null;
obj = new HeavyObject();
同時利於 GC 識別垃圾。
g.drawString("遊戲結束", x, y, ...); 每次調用可能創建新字符串對象。改為:
private static final String GAME_OVER = "遊戲結束";
g.drawString(GAME_OVER, x, y, ...);
img=null。Runtime.getRuntime().totalMemory()/freeMemory() 監控堆變化。內存優化是系統工程:代碼層面「手動管理、常量複用、避免臨時對象」;資源層面「壓縮、分塊、程序化繪圖」;構建層面「混淆、預處理、分析」。習慣成自然,方能在受限設備上馳騁。