package Clearer; import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public final class Main extends MIDlet implements CommandListener { private Display display; private final Command cmdClear = new Command("Очистить", 1, 1); private final Command cmdRefresh = new Command("Обновить", 1, 2); private final Command cmdExit = new Command("Выход", 7, 1); private long totalMem; private long freeMem; Form frm; public Main() { frm = new Form("heap-монитор"); } protected void destroyApp(boolean flag) throws MIDletStateChangeException { exitApp(); } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { if(display == null) initApp(); else refreshData(); } private void initApp() { display = Display.getDisplay(this); frm.addCommand(cmdClear); frm.addCommand(cmdRefresh); frm.addCommand(cmdExit); frm.setCommandListener(this); totalMem = getTotalMem(); freeMem = getFreeMem(); frm.append("Всего памяти: " + Long.toString(totalMem) + "\n"); frm.append("Свободно памяти: " + Long.toString(freeMem)); display.setCurrent(frm); } public void exitApp() { notifyDestroyed(); } private void refreshData() { display.setCurrent(null); frm.delete(1); freeMem = getFreeMem(); frm.append("Свободно памяти: " + Long.toString(freeMem) + "\n"); display.setCurrent(frm); } private long getTotalMem() { return Runtime.getRuntime().totalMemory(); } private long getFreeMem() { return Runtime.getRuntime().freeMemory(); } public void commandAction(Command command, Displayable displayable) { if(command == cmdClear) { System.gc(); Runtime.getRuntime().gc(); refreshData(); } else if(command == cmdRefresh) refreshData(); else if(command == cmdExit) exitApp(); } }