JVM虚拟机——day1

JVM虚拟机——day1

JVM由三个主要子系统构成

  • 类加载子系统
  • 运行是数据区(内存结构)
  • 执行引擎

运行时数据区

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZBjmXbbg-1592394469871)(JVM虚拟机——day1\Image.png)]
jvm架构模型

java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种是基于寄存器的指令集架构
区别
基于栈的架构特点:
   设计和实现简单,适用于资源受限的系统,如机顶盒等小型设备
   避开类寄存器的分配难题:使用0地址指令方式分配
   指令流中的大部分是零地址指令,其指向过程依赖于操作栈。指令集更小,编译更容易实现
   不需要硬件的支持,可移植性更好,更好实现跨平台(内存层面)
   
基于寄存器架构的特点:
    典型的应用X86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机
    指令集架构完全依赖于硬件,可移植性差
    性能优秀,执行更高效
    花费更少的指向区完成一项操作
·   在大部分情况下,基于寄存器架构的指令集往往都以一地址指令,二地址指令和三地址指令为主
       

总结:

跨平台性;指令集小,指令多;性能比寄存器低点

虚拟机生命周期

虚拟机的启动
java虚拟机的启动时通过引导类加载器(bootstrap class loader)创建一个初始类(intitial class)来完成的,这个类是由虚拟机的具体实现来指定的
虚拟机的指向
运行一个java虚拟机有一个清晰的任务:执行Java程序
程序开始执行时它才运行,程序结束时他就停止
执行一个所为的Java程序的时候,真真正正执行的是一个叫做Java虚拟机的进程
虚拟机的退出
以下几种情况:
    程序正常执行结束
    程序在执行过程中遇到了异常或错误而异常终止
    由于操作系统的出现错误导致Java虚拟机进程终止
    某线程调用Runtime类或System类exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作
   除此之外,JNI (Java Native Interface)规范描述类JNI Invocation API来加载或者卸载  Java虚拟机时,Java虚拟机的退出情况
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值