JAVA虚拟机体系结构

学习笔记

一.什么是JAVA虚拟机
    JAVA虚拟机可以是:1抽象规范、2一个具体的实现、3一个正在运行的虚拟机实例

二.JAVA虚拟机的生命周期
       1.诞生
            Java虚拟机的天职就是用来运行java程序的,当一个java程序运行时,一个虚拟机的实例也就随之诞生了。程序结束时,这个虚拟机的实例也随之灭亡。Java虚拟机是通过某个类的main方法来开始程序的,开始一个初始线程。任何其他线程都是通过这个初始线程来启动的。
        2.灭亡
            java中有两种线程:守护线程和非守护线程。守护线程通常是虚拟机自己使用的,比如垃圾回收线程,而java最开始有main开始的线程是非守护线程。Java程序结束时,虚拟机实例也就消失。判断java程序的结束是判断程序中是否还有存活的非守护线程。另外还可以使用System或者Runtime类的exit()方法来结束虚拟机的运行。

三.JAVA虚拟机的体系结构

简要概括各个组成部分
1.类装载子系统:包括系统和用户的类加载器(ClassLoader),用来加载class文件到jvm中,加载方式为双亲委派模式,既当一个类加载器要加载类时,先发请求,由它的父加载器来加载。
2.运行时数据区:一些运行时数据是线程共享的,一些则只能被一个线程拥有。每一个虚拟机都有一个方法区和堆,它们是所有线程共享的。而当一个新线程开始时,它将会拥有自己的java栈和PC寄存器。
3.方法区:
Classloader装载一个类时,会将类信息存放在方法区中
4.堆:
程序运行时,所有对象都是放在堆中。
5.Java栈:
java栈由帧构成。一个帧代表一个方法的调用状态。线程调用一次方法的时候会向栈中压入一个栈帧。当这个方法返回时,这个帧会被弹出并被抛弃。
6.执行引擎:虚拟机的核心,执行引擎的行为使用指令集来定义。

四.类加载过程
    1.装载:查找并加载类型的二进制数据
    2.连接:执行验证(确保被导入类的正确性)、准备(为类变量分配空间,并赋给初始值)以及解析(符号引用换成直接引用,这个是可选的)
    3.初始化:将类变量初始化为正确的值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值