java程序是怎么执行的

埋坑待填, 这一篇是总览,然后细化各个部分。

java程序的运行过程是开发人员进行代码的开发,然后通过编译器编译成java字节码文件,java虚拟机(jvm)把字节码文件加载进来运行,jvm是运行在操作系统之上。
所以我们会遇到什么疑惑呢?

  • 1.java虚拟机(jvm)是什么
  • 2.java代码怎么编译成字节码文件
  • 3.jvm加载字节码过程
  • 4.Java对象内存布局
  • 5.jvm的运行过程是怎么用的

1.java虚拟机(jvm)是什么

虚拟机

就是一台虚拟的计算机,他是一款软件,用来执行一系列虚拟计算机指令。分为系统虚拟机和程序虚拟机

  • 系统虚拟机: 是对物理计算机的仿真,提供一个可以运行完整操作系统的软件平台,如VMware
  • 程序虚拟机: 专门为单个计算机程序而设计,典型的代表就是java虚拟机。

程序运行在虚拟机中,运行效果受限于虚拟的提供的资源。

java虚拟机

java 虚拟机(java viture machine)是一台执行字节码的虚拟计算机,字节码是二进制的数据形式,他拥有独立的运行机制,只要符合虚拟机的规范,其他语言也是可以通过编译器编译成可用于java虚拟机上运行的字节码文件,例如JPython,scala,JRuby等。

java虚拟机优点
  • 一次编译到处运行
  • 自动内存管理
  • 自动垃圾回收功能
    java字节码是运行在虚拟机里的,而虚拟机是运行在操作系统里面的,所以实际上java语言的一次编译到处运行是指的字节码文件,而虚拟机还是要安装成适配linux或者windows系统的,所以我们在安装jdk的时候会有windos和linux版。
HotSpot 虚拟机

目前市面上的高性能虚拟机的代表作之一
它采用解释器和即时编译器并存的架构,目前运行性能和C++的效力可以媲美。目前还有的虚拟机有Sun Class, IBM J9 VM, Apache HarMony, Microsoft JVM等等。

java虚拟机的架构模型

指令集架构又基于栈和基于寄存器两种方式,而java编译器输入的指令是基于栈的指令集架构.

  • 基于栈架构的特点
    1.设计简单,适用于资源受限的系统
    2.不跟硬件系统耦合,移植性更高
    3.指令集少

  • 基于寄存器的架构
    1.性能高,执行速度块
    2.任务执行指令少
    3.不同平台指令集不一样

jvm的生命周期

java虚拟机的是随着执行java程序来运行的,也就是说开发完成一个程序运行起来就是jvm在运行,他负责对程序字节码文件的加载,对象内存分配,等等。jvm的生命周期分为三个阶段。

  • 启动
    java虚拟机的启动是通过引导类加载器加载一个初始类来实现的,不同的虚拟机有不同的初始类实现。
  • 运行
    虚拟机的运行就是执行我们写的代码的逻辑,分配内存等。
  • 退出
    虚拟机退出一般就是程序正常结束,程序异常没处理,操作系统异常等。

2.java代码怎么编译成字节码文件

java设计者在设计之初有意设计了《java语言规范》和《java虚拟机规范》。而字节码文件(.class文件)是java虚拟机中比较重要的部分,它规定了特定的文件结构等信息,这样的话任何语言都可以设计出一个编译器编译成符合字节码规范的字节码文件。而java语言规范约束了java语言的开发规范,即语法,关键词,流程控制等等。我们在开发完成符合java语言规范的文件后,通过java编译器编译成字节码文件。

3.jvm加载字节码过程

java代码编译成字节码后,由jvm加载并执行,那么jvm加载的过程是由类加载子系统来执行的。java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最后形成可以被虚拟机直接使用的java类型。

4.Java内存区域和对象布局

java 虚拟机规范规划的内存区域为程序计数器,虚拟机栈,本地方法栈,堆,元空间等。对象在堆中又分为对象头,实例数据,和对齐填充。

5.jvm的运行过程

java程序是怎么执行的相关推荐

  1. Java面试题16 牛客 以下java程序代码,执行后的结果是()

    Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test {     public static void ma ...

  2. 第 1-1 课:Java 程序是如何执行的?

    了解任何一门语言的精髓都是先俯览其全貌,从宏观的视角把握全局,然后再深入每个知识点逐个击破,这样就可以深入而快速的掌握一项技能.同样学习 Java 也是如此,本节就让我们先从整体来看一下 Java 中 ...

  3. java怎么运行_不要再问我Java程序是怎么执行的了!

    什么是Java虚拟机? 要弄明白Java程序的执行过程首先要了解一下Java虚拟机. 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构 ...

  4. java flv转mp3_用java程序调用ffmpeg执行视频文件格式转换flv

    用java小例题说明更直观:(可以直接编译运行) 环境我在windows平台下测试的... 需要在e:/下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll ...

  5. Java程序是如何执行的

    前言 我们日常的工作中都使用开发工具(IntelliJ IDEA 或 Eclipse 等)可以很方便的调试程序,或者是通过打 包工具把项目打包成 jar 包或者 war 包,放入 Tomcat 等 W ...

  6. java程序制作 exe执行文件

    一.工具准备 1.下载 exe4j: Download exe4j 2.下载innosetup:Inno Setup Downloads 二.IDEA制作可执行jar包 file -> Proj ...

  7. Java 程序是如何执行的

    了解任何一门语言的精髓都是先俯览其全貌,从宏观的视角把握全局,然后再深入每个知识点逐个击破,这样就可以深入而快速的掌握一项技能.同样学习 Java 也是如此,本文章就让我们先从整体来看一下 Java ...

  8. java程序基础——SQL执行顺序

    SQL执行顺序 1.from 2.join 3.on 4.where 5. group by(开始使用select中的别名,后面的语句中都可 以使用) 6.avg,sum.... 7.having 8 ...

  9. 编写java程序的常见问题_Java程序的编写与执行、Java新手常见的问题解决

    原标题:Java程序的编写与执行.Java新手常见的问题解决 今天,我们来写一段Java程序.然后看看Java程序是如何执行的,以及Java新手小白遇到的问题和解决办法. HelloWorld的编写 ...

最新文章

  1. 前端面试题学习和总结
  2. kingadmin页面开发
  3. oracle 11g数据库以管理员身份登录不上
  4. 向量召回 MIND多兴趣双塔模型
  5. 索引访问方法及索引优化
  6. 变,从南到北,从北到南...
  7. recovery.conf 用于 stream replication
  8. 【读书笔记0103】Beginning linux programming-shell programming
  9. 简述java的异常处理机制_简述java异常处理机制
  10. c++类型形参的实参的受限转换
  11. 分布式SQL学习总结(1)——蚂蚁金服资深总监韩鸿源:像使用集中式数据库一样使用OceanBase分布式数据库
  12. 华为机试HJ14:字符串排序
  13. 【060】助力一箭四星,翼辉系统再续辉煌
  14. 校园联通网使用沃派开wifi完美破解
  15. android 模拟器 界面,详细了解雷电安卓模拟器的界面介绍让你更好的使用模拟器...
  16. matlab中停止调试快捷键,matlab停止运行快捷键
  17. php怎么把字符转成大写,php将字符串全部转换成大写或者小写的方法
  18. @Retryable和@Recover的使用
  19. win11蓝牙无法使用 Windows11蓝牙无法使用的解决方法
  20. RACI职责分配矩阵模型使用详解及案例分析

热门文章

  1. Windows Speech SDK5.1的安装和使用(xp/win7)
  2. return -1是什么意思
  3. 大型螺旋CT空间分辨率(线对)
  4. 【编译原理】 实验二:词法分析器的手动实现(基于状态机的词法分析器)
  5. 【React】React Js入门教程(一学就会)
  6. 0x03-无线局域网
  7. 计算机4F,光学4F系统介绍
  8. 虚拟化服务器如何做迁移,如何进行V2P迁移?(上)
  9. 【转】百度腾讯阿里,其大数据优劣势与策略分析
  10. iPad/iPhone等设备访问Windows共享文件方法