一、Java程序运行机制
计算机高级语言按程序执行方式分为编译型和解释型。
编译型:C、C++、Pascal
解释型:Python、Ruby
Java语言编写的程序需要先编译生成.class文件,然后用Java解释器来解释执行,因此Java既不是纯粹的编译型语言,也不是纯粹的解释型语言。
Java语言负责解释执行字节码文件的是Java虚拟机(JVM)。Java编译器编译生成的.class文件是与平台无关的字节码,不面向具体平台,只面向JVM。不同平台的JVM是不同的,但都提供相同的接口,JVM是Java实现跨平台的关键部分。
二、Java程序
javac编译生成的字节码文件有默认的文件名:以源文件所定义类的类名作为主文件名,以.class作为后缀名。这意味着:一个源文件里定义了多个类,则将编译生成多个字节码文件。
Java是面向对象的编程语言,它的程序必须以类(class)形式存在,类(class)是Java程序的最小程序单位。
三、垃圾回收机制
C/C++采用显式进行垃圾回收,比较容易出错。
Java不需要显式进行垃圾回收,它的内存分配和回收都由JRE在后台自动进行。JRE负责回收那些不再使用的内存,这种机制称为垃圾回收机制。
显式进行垃圾回收的目标是回收无用对象的内存空间,这些内存空间是JVM堆内存里的内存空间,垃圾回收只能回收内存资源;为了更快让垃圾回收机制回收那些不再使用的对象,可将该对象的引用变量设置为null;垃圾回收的发生具有不可预知性。
编写Java程序时,对于不再需要的对象,尽量不要引用它们,以便尽快进行垃圾回收。