`
yefeng_laixi
  • 浏览: 16279 次
  • 性别: 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虚拟机中,数组是个真正的对象;

分享到:
评论

相关推荐

    Java JDK 6学习笔记——ppt简体版

    JDK(Java Development Kit)是用于开发Java应用程序的工具包,包含了Java编译器、JVM(Java虚拟机)和各种开发工具。 2. **安装与配置JDK**:学习Java的第一步是正确安装JDK,并设置好环境变量JAVA_HOME、PATH和...

    理解虚拟机--有笔记版

    除了上述提到的基础知识点外,《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》这本书籍还深入探讨了JVM的性能调优、并发编程、以及各种高级特性的具体应用。比如,对于性能调优,书中讲解了如何根据不同的...

    java第一章笔记

    6. **跨平台性**:Java的一个重要特性就是“编写一次,到处运行”(Write Once Run Anywhere, WORA),这得益于Java的运行机制——Java程序被编译成字节码(Bytecode),然后由Java虚拟机(JVM)解释执行。...

    ubuntu安装笔记——part1

    1. **解决关机不正常的问题**:如果遇到关机不正常的问题,可以尝试禁用ACPI功能,或者检查是否有第三方驱动冲突。 2. **解决蓝牙连接问题**:确保蓝牙硬件正常工作,检查蓝牙服务是否已启动,必要时重启蓝牙服务。 ...

    Java 基础 第1阶段:基本语法-尚硅谷学习笔记(含面试题) 2023年

    2023年的"Java 基础 第1阶段:基本语法——尚硅谷学习笔记(含面试题)"涵盖了从环境搭建到程序设计的基本要素,旨在帮助学习者系统地理解并应用Java语言。 一、Java环境搭建 在开始Java编程之前,你需要安装Java ...

    Java_第一章

    【Java_第一章】是关于Java编程语言入门的学习资料,涵盖了计算机基础知识、Java语言的基本概念、JDK的获取与安装,以及编写第一个Java程序——“Hello, World!”的实践。这一章的学习是Java开发者必备的起点,对...

    java学习笔记-基础

    ### Java学习笔记——基础知识详解 #### 一、Java开发环境(JDK)与运行环境(JRE) Java技术的核心在于其强大的跨平台能力,这主要得益于Java的两大环境:JDK(Java Development Kit)和JRE(Java Runtime ...

    达内JAVA培训笔记重点

    这一特性主要得益于Java字节码和Java虚拟机(JVM)的存在。Java源代码被编译成字节码,然后由JVM解释执行,从而实现跨平台性。 3. **简单**:相比C++等其他语言,Java简化了许多复杂的编程概念,如取消了指针、运算符...

    JAVA面向对象编程(孙卫琴)学习笔记

    "JAVA面向对象编程(孙卫琴)_5java继承.doc"涉及Java的面向对象特性之一——继承。继承允许子类从父类中继承属性和方法,增强了代码的复用性和扩展性。同时,它还介绍了多态和抽象类的概念。 "JAVA面向对象编程...

    java学习笔记

    Java程序的运行依赖于Java虚拟机(JVM),这意味着只要目标系统安装了相应的JVM,Java程序就能在其上运行。这种特性确保了Java“一次编写,到处运行”的跨平台性。 - **开发步骤**: 1. **编写源文件**:使用`.java`...

    java并发编程笔记

    通常情况下,一个进程至少包含一个线程,而Java虚拟机默认有两个线程:主线程`main`和垃圾回收线程`GC`。 #### 二、并发与并行 - **并发**:指在同一时间段内,有多个程序(任务)同时处于已启动到未完成的状态。...

    jdk6.0学习笔记

    - 名称由来:Java 的名字来源于 James Gosling 观察到的一棵橡树(Oak),但由于 Oak 已被注册为商标,最终选择了咖啡的产地国——Java(爪哇岛)作为该语言的名字。 - 全球信息网的兴起促进了 Java Applet 的发展...

    技术学习分享,技术学习分享

    10. **JVM和内存管理**:理解Java虚拟机(JVM)的工作原理,包括类加载机制、内存区域(堆、栈、方法区等)以及垃圾收集,可以帮助优化程序性能。 11. **设计模式**:学习并应用如单例、工厂、观察者等经典设计模式...

    JVM学习笔记(一)——类的加载机制

    Java虚拟机(JVM)是Java程序运行的基础,它的核心组成部分之一就是类加载机制。类加载机制负责将Java源代码编译成的.class文件转换为内存中的数据结构,以便程序可以执行。本篇将深入探讨类加载机制的原理和过程。 ...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    java代码-40 李启强

    `main`方法内的代码是程序执行的起点,当运行一个Java程序时,JVM(Java虚拟机)会寻找包含`main`方法的类并执行其中的代码。在`main`方法中,开发者可以编写各种逻辑,包括但不限于初始化对象、调用其他方法、处理...

    大数据技术实验三教程文件.pdf

    5. **统计表的行数**:HBase原生命令并不直接提供行数统计,通常需要通过MapReduce任务或者第三方工具来计算。 实验实例: 实验中创建了三个表,分别是`Student`、`Course`和`SC`,并进行了数据插入。`Student`表...

    安卓开发笔记

    #### 五、版本控制——SVN使用 版本控制系统在团队开发中极为重要,其中Subversion(SVN)是一种常用的版本控制系统。使用SVN可以帮助开发者管理和跟踪代码的变化,主要功能包括: 1. **版本回溯**:可以轻松查看...

Global site tag (gtag.js) - Google Analytics