java代码的执行机制_关于java代码的执行机制

转载于:https://blog.csdn.net/houfeng777123/article/details/74316748

1、Java代码执行流程

4f017324e3975d367c641dd46f7eb3dd.png

·第一步:*.java-->*.class(编译期)

·第二步:从*.class文件将其中的内容加载到内存(类加载)(运行期)

·第三步:执行代码(运行期)

说明:

· 整个白框部分表示JVM管理的内存

· 包含栈帧的地方称作JVM方法栈,一个栈帧就是一个方法

· 在Hotspot JVM中,JVM方法栈和本地方法栈是同一个

· java方法是通过出栈操作来执行的(在类加载后入栈),所以执行引擎直接操作的是栈帧(即一个方法)

· 具体的JVM内存结构,查看第一章 JVM内存结构

2、代码编译

javac命令将源码文件编译为*.class文件。

后边将介绍:

· javac将*.java编译成*.class文件的过程

· class文件的文件格式,以及其存储的内容

3、类加载

主要是指将*.class文件加载到JVM,并形成Class对象的机制,之后就可以对Class对象实例化并调用了。

特点:

· 类加载机制可以在运行时动态加载外部类

后边将介绍:

· 类加载的过程

· 类加载的双亲委托机制

· 类加载器的层次关系及源码

4、执行代码

两种执行方式:

· 解释执行(运行期解释字节码并执行)

· 速度慢,效率低

· 但是要比编译为机器码执行省内存

· 编译为机器码执行(将字节码编译为机器码并执行,这个编译过程发生在运行期,称为JIT编译),下面是两种模式

· client(即C1):只做少量性能开销比高的优化,占用内存少,适用于桌面程序。

· server(即C2):进行了大量优化,占用内存多,适用于服务端程序。会收集大量的运行时信息。

注意:

· 32为机器默认选择C1,可在启动时添加-client或-server来指定,64位机器若CPU>2且物理内存>2G则默认为C2,否则为C1

· Sun JDK执行代码的机制:对在执行过程中执行频率高的代码进行编译,对执行频率不高的代码继续解释执行

后边将介绍:

· Sun JDK执行代码的过程

· C1以及C2执行的一些优化

· 编译执行与解释执行的使用的衡量点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值