高级程序语言按照执行方式分为两种:编译型和解释型
1.编译型
针对一个运行系统,翻译成该系统能够认识的机器码,有的编译完还需要对其他编译好的目标代码进行连接,实现低层次的代码复用。
例:C、C++、FORTRAN、Pascal等高级语言
2.解释型
每次程序运行,都需要从新编译。
例:Ruby、Python等
伪编译型:VB 首先编译成P-代码,并将解释引擎封装到可执行程序中,当点击EXE文件时,启动解释引擎,解释并执行代码。
java编译运行原理:
java源码->java编译器->.class字节码文件->不同系统的JVM虚拟机->适应当前系统运行的机器码
该原理实现了java语言的平台无关性,关键在于JVM虚拟机的实现:JVM是抽象的计算机,也同样有指令集并使用不同的存储空间。
JVM虚拟机的运行需要依赖一些类加载器和字节码校验器等,这些都封装到JRM运行时环境中,所有说没有单独运行的JVM虚拟机。详细区别见http://blog.csdn.net/jojo52013145/archive/2010/08/10/5801916.aspx
java垃圾回收:
java程序中内存的分配和回收都是系统进行的,通常JRE会提供一条超级线程进行检查和控制,一般都会在CPU空闲或者内存不足的时候进行垃圾回收,开发人员不能控制。只能通过 对象=null/对象.finalize() /System.gc() 建议系统去回收,但是也只是建议,并不能精确的控制垃圾回收。