`
yefeng_laixi
  • 浏览: 15763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深入java虚拟机读书笔记——第五章 java虚拟机【1】

阅读更多

第五章 java虚拟机

一. 什么是java虚拟机?

1、抽象的Java虚拟机规范
2
、一个具体的Java虚拟机实现
3
、一个运行的Java虚拟机实例

二.Java虚拟机的生命周期?

  l  java虚拟机内部的两种线程:守护线程和非守护线程

  l  守护线程通常都是由java虚拟机自己创建的,比如垃圾收集任务的线程

  l  java程序也可以创建守护线程

  l  Java程序的初始线程——从main()开始的线程为非守护线程

  l  只要有任何的非守护线程在运行,那么程序就继续运行

总之:java虚拟机的生命周期就是从java程序启动开始到所有的非守护线程终止的这个过程。

三.Java虚拟机的体系机构:

 

1.         每一个java虚拟机都有一个类加载子系统,负责装载类型(类和接口);

2.         每一个java虚拟机都有一个执行引擎,负责执行被装载类中方法的指令;

3.         某些运行时数据由所有线程共享,某些只能由一个线程拥有;

4.         每一个java虚拟机实例都拥有一个方法区以及一个

 

 

5.         虚拟机加载class文件(其中的二进制数据),将类型信息存放到方法区中,运行时创建的对象存放在堆中;

6.         每一个新的线程被创建都将会有得到它自己的PC寄存器(程序计数器)以及一个java

7.         PC寄存器是用于存放下一条被执行的JVM指令的地址(如果即将执行的方法是native方法,则PC寄存器值没有定义);

8.         Java是存储该线程中Java方法的调用状态(局部变量、参数、返回值以及中间结果);

9.         如果是本地方法调用的状态,则则是以依赖于具体实现的方式存储在本地方法栈、或是寄存器或是其它内存区中;

10.     Java是由许多栈桢组成的,一个栈桢包含一个方法的调用状态;当线程调用一个Java方法时,虚拟机压入一个新的栈桢到该线程的Java栈中;当该方法返回时,这个栈桢将从Java栈中弹出;

 

四.数据类型

1.         虚拟机有两种数据类型:基本类型引用类型Java 语言中的所有基本类型同样也都是Java虚拟机中的基本类型,但boolean有点特别,虽然Java虚拟机也把boolean当作基本类型,但是指令集对boolean,只有很有限的支持:当编译器把Java源码编译为字节码时,它会用intbyte来表示boolean。在Java虚拟机中,false是由整数零表示的,所有非零整数都表示true。涉及boolean的值的操作则会使用int。另外,boolean数据是当做byte数组来访问的,但是在堆区,它也可以被表示为位域;

2.         Java虚拟机中还有一个只在内部使用的基本类型:returnAddress,不能在程序开发时使用这个类型,它被用来实现Java程序中的finally子句;

3.         Java虚拟机有三种引用类型:

  l  类类型:对类实例的引用;

  l  接口类型:对实现了该接口的某个类实例的引用;

  l  数组类型:对数组对象的引用;在Java虚拟机中,数组是个真正的对象;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics