JVM深入学习(一)-JVM与JAVA体系结构

简介: JVM深入学习(一)-JVM与JAVA体系结构

Jvm的特点:

  1. 一次编译,到处运行(字节码)
  2. 自动内存管理
  3. 自动的垃圾回收功能


Jvm是跨平台,跨语言的


Jvm的位置

Jvm是一款程序虚拟机,区别于Vmvare这种系统虚拟机


1.1 jvm整体结构




  1. class文件由 类装载器子系统 加载初始化到内存中
  2. 运行时数据区中的方法区和堆是线程共享的,其他三个是每个线程都有各自的
  3. 执行引擎由编译器,JIT编译器,垃圾回收器组成


1.2 java代码的执行过程



  1. 源代码经过java编译器翻译成字节码
  2. jvm把字节码转换为机器能识别的机器码
  3. cpu执行代码


1.3 jvm架构模型


指令集架构分为两种


  1. 基于栈的指令集架构 (jvm)
  1. 设计实现简单,适用于资源受限的系统
  2. 零地址指令方式分配
  3. 指令集小
  4. 不需要硬件支持,移植性好,跨平台
  1. 基于寄存器的指令集架构
  1. 典型的应用 x86的二进制指令集,pc/android
  2. 基于寄存器,对于硬件耦合性较高,可移植性差
  3. 执行更加高效
  4. 指令更少
  5. 指令集大部分以一地址指令,二地址指令,三地址指令为主


1.4 jvm生命周期


  1. 启动
  1. 通过引导类加载器创建一个初始类,这个类具体由具体的虚拟机实现来确定
  1. 执行
  1. 执行java程序,当一个java程序被执行的时候,其实是jvm在执行
  1. 退出
  1. 程序正常执行结束
  2. 程序执行异常/错误而终止
  3. 操作系统出现异常
  4. 线程调用System/Runtime类中的exit/halt方法,且java安全管理器也允许操作


1.5 jvm各版本


  1. classic vm 最开始的vm
  2. exact vm 高性能vm的雏形,有了jit即时编译器
  3. HotSpot vm 现代的vm
  4. JRockit 没有解释器,只有JIT即时编译器,号称最快的vm,被oracle收购,整合到HotSpotVM
  5. J9 ibm的vm,也号称最快的vm,但是仅限于ibm自家的产品
  6. Graal vm 下一代vm 真正的跨语言vm
  7. TaobaoVm 淘宝基于hotSpot深度定制的vm,无法通用,对硬件有要求


目录
相关文章
|
6月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
365 1
|
7月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
212 1
|
6月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
533 0
|
6月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
621 8
|
7月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
115 5
|
7月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
198 5
|
7月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
263 3
|
存储 安全 Java
24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
24、使用 Java 官方教程学习:① 类变量和类方法详解;② 深入介绍 main() 方法
242 1
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
|
Java 测试技术 C++
【JAVA学习之路 | 进阶篇】File类及常用方法
【JAVA学习之路 | 进阶篇】File类及常用方法
下一篇
开通oss服务