第一章 Java代码执行流程
2016-02-09 12:29
375 查看
说明:本文主要参考自《分布式Java应用:基础与实践》
1、Java代码执行流程
第一步:*.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执行的一些优化
编译执行与解释执行的使用的衡量点
1、Java代码执行流程
第一步:*.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执行的一些优化
编译执行与解释执行的使用的衡量点
相关文章推荐
- SpringMVC中四个基本注解
- 个人学习-java-this关键字使用
- java实现逆波兰式四则运算
- eclipse安装和使用
- "java *.java"报错:找不到或无法加载主类
- ubuntu14.04 安装并破解MyEclipse2014
- Spring MVC 拦截器
- 2016蓝桥杯假期任务之《2的次幂表示 》
- java抽象类的创建
- 为什么Myeclipse 提示Project 'bankmanager' is missing required library,myeclipse项目上红叉 但内部红叉
- 更改jdk的默认xml解析器
- java基础总结--注解(Annotation)--注解处理器
- JAVA XML 那些事
- java 基础总结--注解(Annotation)自定义注解入门
- java基础总结--注解(Annotation)基本概念
- Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 问题解决
- java开发webservice的几种方式
- JAVA 中Math.ceil()、Math.floor()和Math.round()的区别
- 【JAVA】4、classpath属性的作用及使用方法
- 在Java程序设计中,设置环境变量path和classpath的作用分别是什么?