JAVA代码是怎么运行的

1.JAVA代码的运行模式:

  可以在开发工具中运行,可以直接双击JAR文件运行,可以在命令行运行,无论是哪种运行方式,都离不开JRE,即JAVA运行时环境。这也是JAVA与C++的区别,C++是编译成机器码在CPU中运行。

 

2.为什么需要在虚拟机运行:

  JAVA是一门高级程序语言,语法复杂,抽象程度高,直接在硬件上运行复杂的程序不现实,所以运行前需要进行转换。设计一个虚拟机,并通过编译器将JAVA程序转换成该虚拟机可识别的指令序列,也成为JAVA字节码,在有虚拟机进行解释。

  虚拟机的另外一个好处就是,它带来了一个托管环境,这个托管环境能代替我们处理代码中冗长而容易出错的部分(内存管理、垃圾回收)。

 

3.JAVA虚拟机如何运行字节码程序:

  HOTSPOT:

  1.首先需要将它编译而成的class文件加载到java虚拟机中。

  2.加载后的java类会被存放于方法区(Method Area)。

  3.实际运行时,虚拟机会执行方法区内的代码。

  4.每当调用进入一个JAVA方法,JAVA虚拟机都会在当前线程的JAVA方法栈中生成一个栈帧。

  5.退出时销毁栈帧。

 

4.HOTSPOT中编译过程的两种方式:

  1.解释执行:无需等待编译。

  2.即时编译:实际运行速度更快。

  HOTSPOT内置多个及时编译器 C1,C2,GRAAL(jdk10)。C1 client编译器 C2 Server编译器

 

JVM的栈分为java的方法栈和本地方法栈。每个方法调用会在栈上划出一块作为栈帧,一个栈是由多个栈帧构成。

 

 

  

 

posted @ 2018-08-05 12:49  kobe_lzq  阅读(740)  评论(0编辑  收藏  举报