Java 程序的运行机制
编译型语言:如C、C++,使用专门的编译器,针对特性的平台,将高级语言一次性翻译为该平台硬件执行的机器码,编译生成的可执行文件,可以脱离开发环境,在特定平台独立运行。通过链接多个编译好的目标代码,组合成最终的可执行文件,实现低层次的代码服用。
解释型语言:如Python,Ruby,使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。可以认为每次执行时都需要进行过一次编译,运行效率较低,不能脱离解释器独立运行,容易跨平台,只需要提供平台所需的解释器即可。
所有平台上的JVM向JAVAC提供相同的编程接口,JVM是Java 一次编译,到处执行的关键转换器。
垃圾回收机制
java的堆内存是一个运行时数据区,用来保存类的实例,java虚拟机的堆内存中存储着正在运行的应用程序所建立的所有对象。这些对象不需要手动释放,JVM有一套垃圾回收算法,可以自动释放不再被程序引用的对象,可以通过System.gc() 来建议系统进行垃圾回收,这种方法只是建议,不能够精确控制GC。