第五章 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源码编译为字节码时,它会用int或byte来表示boolean。在Java虚拟机中,false是由整数零表示的,所有非零整数都表示true。涉及boolean的值的操作则会使用int。另外,boolean数据是当做byte数组来访问的,但是在堆区,它也可以被表示为位域;
2. Java虚拟机中还有一个只在内部使用的基本类型:returnAddress,不能在程序开发时使用这个类型,它被用来实现Java程序中的finally子句;
3. Java虚拟机有三种引用类型:
l 类类型:对类实例的引用;
l 接口类型:对实现了该接口的某个类实例的引用;
l 数组类型:对数组对象的引用;在Java虚拟机中,数组是个真正的对象;
分享到:
相关推荐
JDK(Java Development Kit)是用于开发Java应用程序的工具包,包含了Java编译器、JVM(Java虚拟机)和各种开发工具。 2. **安装与配置JDK**:学习Java的第一步是正确安装JDK,并设置好环境变量JAVA_HOME、PATH和...
除了上述提到的基础知识点外,《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》这本书籍还深入探讨了JVM的性能调优、并发编程、以及各种高级特性的具体应用。比如,对于性能调优,书中讲解了如何根据不同的...
6. **跨平台性**:Java的一个重要特性就是“编写一次,到处运行”(Write Once Run Anywhere, WORA),这得益于Java的运行机制——Java程序被编译成字节码(Bytecode),然后由Java虚拟机(JVM)解释执行。...
1. **解决关机不正常的问题**:如果遇到关机不正常的问题,可以尝试禁用ACPI功能,或者检查是否有第三方驱动冲突。 2. **解决蓝牙连接问题**:确保蓝牙硬件正常工作,检查蓝牙服务是否已启动,必要时重启蓝牙服务。 ...
2023年的"Java 基础 第1阶段:基本语法——尚硅谷学习笔记(含面试题)"涵盖了从环境搭建到程序设计的基本要素,旨在帮助学习者系统地理解并应用Java语言。 一、Java环境搭建 在开始Java编程之前,你需要安装Java ...
【Java_第一章】是关于Java编程语言入门的学习资料,涵盖了计算机基础知识、Java语言的基本概念、JDK的获取与安装,以及编写第一个Java程序——“Hello, World!”的实践。这一章的学习是Java开发者必备的起点,对...
### Java学习笔记——基础知识详解 #### 一、Java开发环境(JDK)与运行环境(JRE) Java技术的核心在于其强大的跨平台能力,这主要得益于Java的两大环境:JDK(Java Development Kit)和JRE(Java Runtime ...
这一特性主要得益于Java字节码和Java虚拟机(JVM)的存在。Java源代码被编译成字节码,然后由JVM解释执行,从而实现跨平台性。 3. **简单**:相比C++等其他语言,Java简化了许多复杂的编程概念,如取消了指针、运算符...
"JAVA面向对象编程(孙卫琴)_5java继承.doc"涉及Java的面向对象特性之一——继承。继承允许子类从父类中继承属性和方法,增强了代码的复用性和扩展性。同时,它还介绍了多态和抽象类的概念。 "JAVA面向对象编程...
Java程序的运行依赖于Java虚拟机(JVM),这意味着只要目标系统安装了相应的JVM,Java程序就能在其上运行。这种特性确保了Java“一次编写,到处运行”的跨平台性。 - **开发步骤**: 1. **编写源文件**:使用`.java`...
通常情况下,一个进程至少包含一个线程,而Java虚拟机默认有两个线程:主线程`main`和垃圾回收线程`GC`。 #### 二、并发与并行 - **并发**:指在同一时间段内,有多个程序(任务)同时处于已启动到未完成的状态。...
- 名称由来:Java 的名字来源于 James Gosling 观察到的一棵橡树(Oak),但由于 Oak 已被注册为商标,最终选择了咖啡的产地国——Java(爪哇岛)作为该语言的名字。 - 全球信息网的兴起促进了 Java Applet 的发展...
10. **JVM和内存管理**:理解Java虚拟机(JVM)的工作原理,包括类加载机制、内存区域(堆、栈、方法区等)以及垃圾收集,可以帮助优化程序性能。 11. **设计模式**:学习并应用如单例、工厂、观察者等经典设计模式...
Java虚拟机(JVM)是Java程序运行的基础,它的核心组成部分之一就是类加载机制。类加载机制负责将Java源代码编译成的.class文件转换为内存中的数据结构,以便程序可以执行。本篇将深入探讨类加载机制的原理和过程。 ...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
`main`方法内的代码是程序执行的起点,当运行一个Java程序时,JVM(Java虚拟机)会寻找包含`main`方法的类并执行其中的代码。在`main`方法中,开发者可以编写各种逻辑,包括但不限于初始化对象、调用其他方法、处理...
5. **统计表的行数**:HBase原生命令并不直接提供行数统计,通常需要通过MapReduce任务或者第三方工具来计算。 实验实例: 实验中创建了三个表,分别是`Student`、`Course`和`SC`,并进行了数据插入。`Student`表...
#### 五、版本控制——SVN使用 版本控制系统在团队开发中极为重要,其中Subversion(SVN)是一种常用的版本控制系统。使用SVN可以帮助开发者管理和跟踪代码的变化,主要功能包括: 1. **版本回溯**:可以轻松查看...