1、JAVA程序的运行机制
Java是一种特殊的高级编程语言,它既具有解释性语言的特征,也具有编译型语言的特征,因为Java程序都要先经过编译再解释执行两个步骤。也正是因为这个特性,Java可以做到一次编写,多平台运行。Java程序编写好后,最终执行之前都需要编译成字节码文件,也就是以.class为后缀的文件,这些字节码不面向任何具体平台,只面向JVM(Java Virtual Machine)。JVM即Java语言里负责执行字节码文件的是Java虚拟机。跨平台运行的关键就在于此,不同的平台上都安装了对应的JVM,而不同的JVM都可以解释执行.class文件。
Oracle公司制定的Java虚拟机规范在技术上规定了JVM的统一标准,具体定义了JVM如下细节:
- 指令集
- 寄存器
- 类文件的格式
- 栈
- 垃圾回收堆
- 存储区
2、在命令行中常用的Java命令及参数
平时都是用开发工具编译执行程序,久而久之,反而忘记了最基础的Java编译和执行命令,因此复习记录一下:
- javac [-d 目录|-verbose] file
- java [-classpath(cp) dir] file
- jar -zcvf dir file
- javap [-private(p)] file
javac命令
我们都知道javac命令用来编译文件
-d :在javac后加-d .
会把java文件放在指定的包下。
但当我们的java程序在某个包下时,如果还用javac 编译则会有
-verbose:显示每个所加载的类和每个所编译的源文件的有关信息
java命令
对于java命令,我们都知道它可以运行java程序
java -classpath dir:指定输入.class文件的位置(可以联想到CLASSPATH环境变量)
jar命令:打包.class文件
如果有多个文件,用空格隔开
javap命令:反编译.class文件(这个可以多记下,以前很少用)
3、垃圾回收机制
相比其他语言,Java的有点之一是lava回收机制。Java程序员不需要程序员直接控制内存回收,Java程序的内存分配和回收都是由JRE在后台自动进行的。JRE会负责回收哪些不再使用的内存,这种机制被称为垃圾回收(garbage collection),通常JRE会提供一个后台线程来进行检测和控制,一般在CPU空闲或内存不足时自动进行垃圾回收,而程序员无法精确通知垃圾回收的时间和顺序等。这里只对相关概念进行了解,不做深入说明。
垃圾回收机制回收的区域?
Java的堆内存,堆内存是一个运行时的数据区,用以保存类的实例(对象),Java虚拟机的堆内存中存储着正在运行的应用程序所建立的所有对象。所有的JVM实现都有一个由垃圾回收器管理的堆内存。
垃圾回收机制的优点?
- 提高编程效率。
- 保护程序的完整性,垃圾回收是Java语言安全策略的一个重要部分。
垃圾回收机制的缺点?
垃圾回收的一个潜在缺点是它的开销影响程序性能。