理解記憶體分佈是優化 J2ME 應用的前提:
| 記憶體類型 | 用途 | 特點 |
|---|---|---|
| Programme Memory | 存放 MIDlet Suite(JAR 檔) | 大小受廠商限制(如 Nokia 6108 僅 64KB),超過無法安裝。使用 ProGuard 混淆壓縮可顯著減小體積。 |
| Heap | 運行時物件、區域/成員變數 | 通常僅數十 KB 到數百 KB。物件創建需極度節制,避免記憶體洩漏與 OOM。 |
| Persistent Storage | RMS(Record Management System)本地持久化 | 相對較大,用於存儲遊戲存檔、設定、離線資料。詳細可參考 RMS 專題。 |
Connected Limited Device Configuration (CLDC) 定義了 Java 虛擬機(KVM)與核心類庫的最小子集:
java.io、java.lang、javax.microedition.io、java.util(CLDC 1.0);CLDC 1.1 新增 java.lang.ref(弱引用支援快取實作)。CLDC 進行了硬體抽象,屏蔽了不同處理器、螢幕、輸入裝置的差異。
Mobile Information Device Profile (MIDP) 建構在 CLDC 之上,提供:
startApp()、pauseApp()、destroyApp()。Display、Screen、Canvas、GameCanvas。javax.microedition.io)。J2ME 平台 = 1 個 CLDC + 1 或多個 Profile(MIDP、PDAP、DoJa 等)。
Runtime.getRuntime().freeMemory() 監測,避免在弱設備崩潰。