Java虚拟机原理学习笔记

一 Java虚拟机概述

  • Java虚拟机实例是由 类装载器、运行时数据区(堆、Java栈、方法区、PC寄存器、本地方法栈)、执行引擎几部分组成的。
  • Java堆和方法区是对所有线程共享的,而每一个线程都由自己的Java栈和PC寄存器,线程之间不能共享Java栈和PC寄存器。
  • Java栈是向下生长的,也就是说最下端的是栈顶。
  • 在boolean值的处理中,用0来表示false,其他所有非0值表示true。
  • 用户自定义的classloader实例也是存放在堆中,而被装载的类的信息是放在方法区中。
  • 类装载器的类型包括 启动类装载器、系统类装载器、用户自定义类装载器,其中系统类装载器是在JDK1.2后引入的,它也属于自定义类装载器,专门负责检索和装载classpath下的类文件。
  • Java程序运行过程中所有声称的类实例和数组实例都存放在堆(heap)中,每一个Java进程都只有一个堆,不同的Java进程之间不能共享堆,堆中的数据是对同一个Java进程中的所有线程可见的,因此需要考虑同步问题。
  • 每一个堆中的对象都有一个对象锁,可以用这种机制实现线程同步问题,某个线程获得对象所有,其他线程必须等待,知道获得对象锁后才能继续执行。一个线程可以堆一个对象多次加锁(追加锁),同理,释放锁也需要多次。
  • 对象可能会持有一个等待集合,可以用这种机制实现Java中的wait、notify、notifyAll功能。
  • 每一个线程开始执行的时候,都会创建一个PC寄存器,PC寄存器的大小为一个字(word)长,因此它可以持有一个本地指针。并且总是指向下一个被执行的指令。当执行本地方法的时候,PC寄存器的值为“undefined”。
  • 正在运行的每一个Java线程都是执行引擎的实例。
二 Class文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值