Java 语言概述与开发环境

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java 语言概述与开发环境脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Java程序运行机制

编译型语言


使用专门的编译器,针对特定平台(操作系统)将某种高级语言代码一次性“翻译”成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译。编译生成的可执行性程序可以脱离开发环境,在特定的平台上独立运行。

  1. 一次性编译成机器码,脱离开发环境独立运行,运行效率较高。

  2. 编译生成的可执行性程序通常无法移植到其他平台上运行。

解释型语言


使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。

  1. 跨平台比较容易,只需提供特定平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可。

  2. 程序运行效率通常较低,而且不能脱离解释器独立运行。

Java程序的运行机制和JVM

Java程序的执行过程必须经过先编译、后解释两个步骤。
Java源文件(.java)→ 使用javac编译 → 字节码文件(.class)→ 使用java解释执行 → 特定平台的机器码

Java语言中负责解释执行字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)JVM是运行字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。JVM:指令集+寄存器+类文件的格式+栈+垃圾回收堆+存储区

垃圾回收机制

Java程序的内存分配和回收都是由JRE在后台自动进行的。JRE会负责回收那些不再使用的内存,这种机制被称为垃圾回收(Garbage Collection, GC)。通常JRE会提供一个后台线程来进行检测和控制,一般都是在CPU空闲或内存不足时自动进行垃圾回收,而程序员无法精确控制垃圾回收的时间和顺序等。

Java的堆内存是一个运行时数据区,用以保存类的实例(对象),Java虚拟机的堆内存中存储着正在运行的应用程序所建立的所有对象,这些对象不需要程序通过代码来显示式地释放。

Java虚拟机具有两个显著特点

  1. 垃圾回收机制可以很好地提高编程效率。在没有垃圾回收机制时,可能要花许多时间来解决一个难懂的存储器问题。在用Java语言编程时,依靠垃圾回收机制可大大缩短时间。

  2. 垃圾回收机制保护程序的完整性,垃圾回收是Java语言安全性策略的一个重要部分。

垃圾回收具有如下几个特点

  1. 垃圾回收机制的工作目标是回收无用对象的内存空间,这些内存空间都是JVM堆内存里的内存空间,垃圾回收只能回收内存资源,对其他物力资源,如数据库连接、磁盘I/O等资源则无能为力。

  2. 为了更快地让垃圾回收机制回收那些不再使用的对象,可以将该对象的引用变量设置为null,通过这种方式暗示垃圾回收机制可以回收该对象。

  3. 垃圾回收发生的不可预知性。不同的垃圾回收机制和不同的垃圾回收算法。

  4. 垃圾回收的精确性主要包括两个方面:

    • 垃圾回收机制能够精确地标记活着的对象;

    • 垃圾回收器能够精确地定位对象之间的引用关系。
      前者是完全回收所有废弃对象的前提,否则就可能造成内存泄漏;而后者则是实现归并和复制等算法的必要条件,通过这种引用关系,可以保证所有对象都能被可靠地回收,所有对象都能被重新分配,从而有效地减少内存碎片的产生。

  5. 现在的JVM有多种不同的垃圾回收实现,每种回收机制因其算法差异可能表现各异,有的当垃圾回收开始时就停止应用程序的运行,有的当垃圾回收运行时允许应用程序的线程运行,还有的在同一时间允许垃圾回收多线程运行。

脚本宝典总结

以上是脚本宝典为你收集整理的Java 语言概述与开发环境全部内容,希望文章能够帮你解决Java 语言概述与开发环境所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。