解读java.lang.Runtime

public class Runtime {
    private static Runtime currentRuntime = new Runtime();

    public static Runtime getRuntime() {
        return currentRuntime;
    }

    private Runtime() {}

    public void exit(int status) {
        throw new SecurityException(
                "MIDP lifecycle does not support system exit.");
    }

    public native long freeMemory();

    public native long totalMemory();

    public native void gc();
}

Runtime是一个基本类。从中可以看到:

  1. Runtime使用的是最简单的单实例模式。
  2. 提供了计算内存的大小和gc的方法。
  3. 注意:exit只是抛出SecurityException,并没有杀死进程。

这说明,MIDP中是没有进程的概念的。Midlet相当于容器里的一个组件。每个MIDlet的启动和关闭并不是意外着进程的结束。这跟PC电脑上的概念非常的不同。

在手机中,存储区域分为ROM和RAM。每个Java的程序是放在ROM中的,运行的时候是放在RAM中的。不同于PC,没有磁盘的概念。启动程序是从ROM调到RAM中。

启动一个Java程序时候,首先打开JVM,将ROM中的Java程序调到JVM中,JVM找到Midlet的startApp来开始执行。当退出的时候,需调用 detroyApp。

所以,当程序向自己调用exit()的时候只能得到一个安全的异常。但不一定会退出的。当要退出的时候是调用destroyApp来退出的。同时实现notifyDestroyed来通知JVM已经退出了。