转载

JVM从零开始:Java重要概念与JVM(二)

原文地址: www.sudo.ren/article/81?…

Java的体系结构主要由Java编程语言、字节码、Java API 和Java虚拟机相关技术组成。 1.Java语言编写程序; 2.前端编译器(javac)将Java源码编译为字节码文件(*.class); 3.JVM将字节码装载进其内部,然后解释/编译为对应平台上的机器指令。

Java语言:Java大约定义51个关键字。

Java继承了C语言的语法结构,改编了C++的对象模型。并且Java舍弃了C和C++中很多不安全的语法特性。比如:

  • 废弃指针操作;
  • 自动内存管理;
  • 数组边界检查;
  • 类型转换检查;
  • 线程安全机制;
  • 物理环境访问限制。

字节码:

Java源码的编译结果不是本地机器指令,而是字节码,这就很好的解决了程序的安全性,跨平台移植性等问题。我们可以将编译后的字节码部署到其他装有jre环境下,同样可以正常运行,这就是我们经常说的“一次编译,处处运行”

JavaAPI:

API即为应用程序编程接口,是一些预定义的接口,提供应用程序与开发人员给予软件或硬件的以访问一组例程的能力,而又无需访问源码或理解内部工作机制细节。其中包含了Java的基础类库集合,提供了一套访问主机系统资源的标准方法。

Java虚拟机:

JVM是由一组规范所定义出的抽象计算机。负责将字节码装载到其内部,解释/编译为对应平台上的机器指令。我们接下来要学习的就是HotSpot VM,它是目前市面上高性能虚拟机之一。HotSpot具备热点探测功能,能将一个被频繁嗲用的方法或方法体中有效循环次数较多的代码块标记为“热点代码”,然后通过内嵌的双重JIT(Just In Time Compiler)编译器将字节码直接编译为本地机器指令。HotSpot中编译器和解释器并存,依赖热点探测功能确定字节码指令通过解释运行,还是编译运行。

编译器/解释器在虚拟机的运行:

虚拟机启动,解释器便开始发挥作用,不必等编译器全部编译完成再执行,这样可以节省很多编译时间。根据热点探测功能,编译器会将有价值的字节码编译为本地机器指令,以换取更高的程序执行效率。

HotSpot中内嵌2个JIT编译器:

系统与物理硬件自动选择哪种编译器,开发人员也可手动显示调用编译策略。默认情况下开启分层编译策略,由C1和C2编译器相互协调共同完成编译工作。

  • Client Compiler(C1):对字节码进行简单可靠的优化,已达到更快的编译速度;
  • Server Compiler(C2):启动一些编译耗时更长的优化,以获取更好的编译质量;
原文  https://juejin.im/post/5dce13795188254eb23dd562
正文到此结束
Loading...