深入Java虚拟机一书读书笔记,以前虽然断断续续的了解过虚拟机,但不够系统化,这次好好系统的学习回顾和总结一篇
1. Java虚拟机是什么
Java虚拟机一般是指:抽象的规范、一个具体的实现、一个运行中的虚拟机实例。
这个抽象的规范可能有多个不同厂商的具体实现,并存在与多个平台上。它可以由软件实现,或以硬件结合软件的方式实现,SUN的JDK就是由纯软件方式实现的。当运行一个Java程序时,也就在运行了一个Java虚拟机实例。
2. Java虚拟机的生命周期
Java虚拟机实例通过调用某个初始化类的Main()方法,来开始运行一个Java程序。这个初始化类的Main()方法,将作为该程序初始线程的起点,任何其他的线程都从这个初始线程中启动的。
Java虚拟机内部有两种线程:守护线程与非守护线程。守护线程通常是由虚拟机自己使用的,如执行垃圾回收任务的线程。但是在Java程序中也可以把它创建的任何一个线程标记守护线程来运行。开始于Main()方法的初始线程就是非守护线程。
在Java虚拟机中只要有任何一个非守护线程在运行,那这个Java虚拟机实例就将一直存活,直到该虚拟机中的所有非守护线程都终止时,这个虚拟机实例才会被销毁。
3. Java虚拟机的体系结构
虚拟机抽象结构图,描述了规范中的主要子系统和内存区。
线程共享区“堆”与“方法区”
在虚拟机中“堆”与“方法区”是由所有线程共享的。当类加载器加载一个class文件时,它将从class文件中分析出类型信息,然后把这些类型信息存放到“方法区”中,程序运行时,虚拟机会把该程序在运行时创建的对象都存放到“堆”中。
小结:
1)类变量都是存放在“堆”中,因而需要同步多线程环境下的读写操作
2)一个Java虚拟机实例只存在一个“堆”空间
线程独享区“Java栈”、“本地方法栈”与“PC寄存器”
每当启动一个新线程时,虚拟机都会为它分配一个Java栈与PC寄存器(程序计数器)。每个Java栈是由许多栈帧(stack frame)组成的,一个栈帧包含一个Java方法调用的状态。当线程调用一个Java方法时,虚拟机压入一个新的栈帧到栈中。当方法返回时,这个栈帧将从栈中弹出并抛弃。
小结:
1)Java栈上的所有数据都是私有的,任何线程都不能访问另一个线程的栈数据,因此不需要考虑多线程环境下的同步问题。
2)Java栈以帧为单位保存线程的运行状态,虚拟机只会对Java栈执行两种操作:以帧为单位的压栈或出栈。
3)栈帧由三部分组成:局部变量区、操作数栈、帧数据区。
4)栈空间随着线程的终止而释放,如果在线程执行的过程中,栈空间不够用,那么JVM就会抛出StackOverflowError异常,这种情况一般是无线循环或死递归造成的。
5)Java虚拟机没有寄存器,这里PC寄存器是由底层操作系统分配的。
数据类型
Java中数据类型分为两种:
1)基本类型:数值类型(整数与浮点数)、boolean、returnAddress(只在JVM内部使用的类型,用来实现finally子句,具体没深入研究)
2)引用类型:类类型、接口类型、数组类型、以及null

- 大小: 51.7 KB

- 大小: 33.5 KB

- 大小: 21.7 KB
分享到:
相关推荐
深入理解Java虚拟机,首先我们要明白Java虚拟机(JVM)的核心功能:它负责装载类文件,执行字节码,并管理内存。Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM...
通过阅读《深入理解Java虚拟机》第三章,开发者不仅可以深入理解Java的安全机制,还能学习到如何在实际项目中实施这些安全策略,提升应用的安全性。对于想要从事Java开发或者对系统安全有深入了解需求的人来说,这一...
读书笔记:学习周志明先生的深入理解Java虚拟机的笔记
总的来说,"深入理解Java虚拟机读书笔记之:第3章 安全(2)"主要涵盖了Java安全体系的核心概念,包括类加载器、权限模型、安全管理器以及相关工具的使用。理解这些内容对于任何希望构建安全、可靠的Java应用程序的...
读书笔记:周志明的《深入理解java虚拟机》读书笔记
读书笔记:java 虚拟机,深入理解Java虚拟机 JVM高级特性与最佳实践
读书笔记:周志明老师《深入理解Java虚拟机》第三版阅读笔记
读书笔记:深入理解Java虚拟机周志明
读书笔记:深入理解Java虚拟机第二版_周志明读书笔记
读书笔记:深入理解Java虚拟机周志明著
读书笔记:深入理解Java虚拟机(周志明)源码及学习笔记
读书笔记:《深入理解Java虚拟机 Jvm高级特性与最佳实践第三版》阅读笔记
读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践
读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践
读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践第3版学习笔记
读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践第二章笔记
读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践第3版 周志明 学习笔记
读书笔记:周志明的《深入理解Java虚拟机》第二版的思维导图笔记
读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践第3版
读书笔记:深入理解java虚拟机JVM高级特性与最佳实践中代码