说明:本文主要参考自《分布式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执行的一些优化
  • 编译执行与解释执行的使用的衡量点

转载于:https://www.cnblogs.com/java-zhao/p/5185500.html

第一章 Java代码执行流程相关推荐

  1. java代码执行流程

    JIT编译器将热点代码编译成机器指令给缓存起来,主要是解决性能和响应时间的问题.

  2. 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld

    第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...

  3. 《整洁代码之道》学习书摘(二)第一章——整洁代码

    第一章 整洁代码 第一章 整洁代码 要有代码 糟糕的代码 混乱的代价 思想流派 我们是作者 童子军军规 前传与原则 小结 学习收获 要有代码 阅读本书(书摘)有两种原因,第一,你是个程序员:第二,你想 ...

  4. 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)

    java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...

  5. 基于《java2实用教程》的java知识点复习整理【第一章——java入门】

    第一章--java入门 一.知识结构框架 二.知识点详解 1.java特点:编写一次,随处运行 简单 Java要比C++简单,C++中许多容易混淆的概念,被Java弃之不用了,或者以一种更清楚更容易理 ...

  6. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  7. Java代码执行顺序

    Java代码执行顺序 1. Java初步认知 2. Javayun.java例子 3. 反编译Javayun.class文件 4. 分析Javayun_dxdump文件 5. 再来一个网上的例子Jav ...

  8. 第一章 Java环境搭建、IDEA、Java语言

    JavaSE基础大纲: 一. Java环境搭建.IDEA.Java语言 二.Java语法.运算符.随机数 三.分支.循环.控制关键字 四.数组详解.案例训练 五.方法详解.案例训练 六.面试常见编程案 ...

  9. JVM03Java代码执行流程

    一.Java的跨平台性 Java代码的执行流程 jvm运行原理: 运行一个HelloWorld的类,运行完毕之后,文件夹里出现HelloWorld.class的文件 javac程序是一个Java编译器 ...

  10. Java极速入门系列:第一章Java概述、Java环境、IDEA开发工具

    Java极速入门-第一章Java概述.Java环境.IDEA开发工具 一.什么是Java 1.好的编程语言的特性 2.Java的特点 3.Java的运行机制 4.Java的三大体系 5.Java环境 ...

最新文章

  1. History(历史)命令用法
  2. 5G RRC——为NAS层提供连接管理,消息传递等服务; 对接入网的底层协议实体提供参数配置的功能; 负责UE移动性管理相关的测量、控制等功能...
  3. tomcat jdk servlet websocket版本对应关系
  4. git的入门摸索和入门研究
  5. Makefile文件试错
  6. android node
  7. JavaScript-操作DOM对象-删除dom节点
  8. 34 MM配置-采购-采购订单-定义凭证类型
  9. php框架例子,php框架中的动态实例化对象详解
  10. Qt4_读取和写入二进制数据
  11. 最大回撤,最大回撤恢复时间与最大回撤持续期
  12. ios学习:Xcode工具
  13. 莫烦python学习笔记之numpy.array,dtype,empty,zeros,ones,arrange,linspace
  14. timeSetEvent的用法(一)
  15. 面向对象的JavaScript-008-Function介绍
  16. android壁纸路径/目录
  17. deb 中标麒麟_中标麒麟linux
  18. android铃声总结
  19. Final Project 期末项目: PySnake
  20. Diy-Scratch(4) 大家来找茬

热门文章

  1. 如何在苹果Mac更改通知显示的时长?
  2. Mac 的 Adobe Creative Cloud 无法连接至服务器的解决办法?
  3. 负载均衡实现 --- LVS的介绍、调度算法、NAT模式的搭建
  4. HDU2504 又见GCD
  5. mysql 正则表达式 regExp
  6. 大学生毕业如何选择职业?
  7. mysql 新增字段 添加字段 删除字段 修改字段 级联删除 级联更新 等
  8. Win32 文件(2)
  9. 为你的软件选择正确的许可证方案
  10. ubuntu12.04.4安装搜狗输入法