知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

java代码的执行过程

发表时间:2022-03-25来源:网络

一、Java程序从源文件创建到程序运行要经过两大步骤:

1、编译期:编译器把 .java 源代码文件编译成 .class 字节码文件

2、运行期:Java类加载器将 .class 字节码文件加载到内存,在 JVM 中进行解释并生成可执行代码。

因为 Java 程序既要编译同时也要经过 JVM 的解释运行,所以说Java被称为半解释语言( “semi-interpreted” language)。

 

 

 

编译期
创建完源文件之后,程序先要被 JVM中 的 Java 编译器进行编译为 .class 文件。Java 编译一个类时,如果这个类所依赖的类还没有被编译,编译器会自动的先编译这个所依赖的类,然后引用。如果 Java 编译器在指定的目录下找不到该类所依赖的类的 .class 文件或者 .java 源文件,就会报 “Cant found sysbol” 的异常错误。

编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的(常量、类名、成员变量等)以及符号引用(类引用、方法引用,成员变量引用等);方法字节码中放的是各个方法的字节码。

运行期
Java 类运行的过程大概分为:类的加载和类的执行。需要说明的一点的是:JVM 并不是在运行时就会把所有使用到的类都加载到内存中,JVM主要在程序第一次运行时主动使用类的时候,才会立即去加载。

在 Java 中,JVM可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。

二、对象的创建和使用:内存解析

 

1、堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
2、通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。
局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放。
3、方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。
4、一个进程有多个线程,每个线程有自己的栈和计数器但共用方法区和堆。

三、 Java语言运行机制及运行过程
核心机制—Java虚拟机
1、JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指
令,管理数据、内存、寄存器。
2、对于不同的平台,有不同的虚拟机。
3、只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
4、Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

 

 

 


核心机制—垃圾回收
1、不再使用的内存空间应回收—— 垃圾回收。
2、在C/C++等语言中,由程序员负责回收无用内存。
3、Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
4、垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
————————————————
版权声明:本文为CSDN博主「MysteryCY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42146136/article/details/109045985

TRANSLATE with x English Arabic Hebrew Polish Bulgarian Hindi Portuguese Catalan Hmong Daw Romanian Chinese Simplified Hungarian Russian Chinese Traditional Indonesian Slovak Czech Italian Slovenian Danish Japanese Spanish Dutch Klingon Swedish English Korean Thai Estonian Latvian Turkish Finnish Lithuanian Ukrainian French Malay Urdu German Maltese Vietnamese Greek Norwegian Welsh Haitian Creole Persian     TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜