JAVA虚拟机学习
Java虚拟机学习 - 体系结构 内存模型Java虚拟机学习 - 对象访问Java虚拟机学习 - 垃圾收集算法Java虚拟机学习 - 垃圾收集器Java虚拟机学习 - 对象内存分配与回收Java虚拟机学习 - 查看JVM参数及值的命令行工具Java虚拟机学习 - JDK可视化监控工具Java虚拟机学...
JAVA 虚拟机学习整理 一、基本结构
一、JAVA虚拟机基本结构 1. JAVA虚拟机的基本结构图 图1.1JVM内部结构图 类加载子系统:负责从文件系统或网络加载Class信息,加载的类信息存放在方法区中 方法区:JDK1.6/1.7可以理解为permgen space (永久驻留区),里面还包括一些运行时的常量池信息, 字符串字...
《深入理解java虚拟机》学习笔记一
虚拟机与java虚拟机 虚拟机是通过虚拟化软件(例如VMware)在PC平台上仿真一台和本机具有相同的硬件环境,它有显卡、声卡、处理器等硬件。与此同时衍生出虚拟机系统的概念,虚拟机系统与虚拟机的本质区别是前者依赖于后者,虚拟机系统是在虚拟机基础上安装的系统,就像我们Pc上安装Windows和L...
《深入理解Java虚拟机》学习笔记——内存区域
Java虚拟机在执行程序过程中会把管理的内存划分为不同的数据区域,包括方法区、堆、虚拟机栈、本地方法栈、程序计数器这5个部分。 1、程序计数器 它是一块较小的内存空间,指示当前线程执行的字节码行号,字节码解释器工作时就是通过改变这个计数器值来选取下一条需要执行的字节码指令,从而完成分支、循环、跳转、...
《深入理解Java虚拟机》学习笔记一:Java内存区域
JVM所管理的内存包括几个运行时数据区域: 1程序计数器(program counter register):为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程之间的计数器互不影响,独立存储,这类内存区域称为“线程私有”内存。他是唯一一个在java虚拟机规范中没有规定...
《深入理解Java虚拟机》学习笔记-- Java内存区域
Java运行时的内存区域主要有5个区域, 线程共享的数据区 : 方法区、Heap 线程私有的区域 : 虚拟机栈(VM Stack)、本地方法栈(Native method stack)、程序计数器 。 在理解JVM内存区域时,最好结合多线程的场景去理解,才能更好地明白为什么上述区域有...
Java内存区域与对象--《深入理解Java虚拟机》学习笔记
Java内存区域与对象《深入理解Java虚拟机》学习笔记一、java内存区域 - 程序计数器 程序计数器是一块较小的线程私有的内存区域,存储当前线程所执行的字节码指令的地址,字节码解释器就是通过改变该计数器的值来选取下一条需要执行的字节码指令;如果线程正在执行的是一个java方法,程序计数器记录...
深入理解Java虚拟机-学习笔记(1)Java内存区域
首先来张图吧,也是书上的图主要展示了Java虚拟机运行时数据区 1.程序计数器(Program Counter Register) 可以看做当前线程所执行的字节码的行号指示器 字节码解释器工作时就是通过改变这个计数器的数值来执行下一条需要执行的字节码指令 Java虚拟机多线程是通过轮流切换分配处理...
深入理解java虚拟机学习笔记-第3章
深入理解java虚拟机学习笔记-第3章 Table of Contents 1. 第3章-垃圾收集器与内存分配策略 1.1. 对象已死吗 1.1.1. 引用计数算法 1.1.2. 可达性分析算法 1.1.3. 再谈引用 ...
Java学习之【深入理解Java虚拟机---对象的创建】
今天总结的是对象在虚拟机中的创建,布局以及访问。 对象的创建 在虚拟机中对象的创建将分为以下几个步骤:1.类的加载检查 首先来看下类的加载检查。每当虚拟机遇到一条new指令时,它将先到常量池中检查是否存在将要创建对象的符号引用,并且检查这个符号引用代表的类是否已经加载,解析和初始化过。如果没有,...
深入理解JAVA虚拟机学习笔记12——Class类文件的结构(2访问标志, 继承, 实现)
各位朋友,上一篇的常量池都掌握了吧,我们的口号是:每天进步一点点! 开始之前,我们先巩固并扩充一下昨天的知识,用Excel表示一下就是这样的(请原谅笔者low到爆的画图水平,画这种图有什么好的工具,朋友们可以推荐一下啊)。 请注意!!!这里有个地方需要补充个一下,那就是当常量的类型是C...
《深入理解Java虚拟机》学习笔记1
1.程序计数器 作用-较小的内存空间,用于存储当前线程所执行的字节码的行号 特性-每条线程有需要一个独立的程序计数器,各线程间互不影响,独立存储,称为"线程私有"的内存 2.Java虚拟机栈-程序员口中的"栈" 作用-描述Java方法执行的内存模型,每个方法执行...
《深入理解Java虚拟机》学习笔记
>>自动内存管理机制 第2章 垃圾收集器与内存分配策略 1.Java虚拟机在执行java程序时会把它所管理的内存会分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是在以来用户线程的启动和结束而建立和销毁。根据《Java...
深入理解Java虚拟机学习笔记——二、垃圾收集器与内存分配策略
1、对象存活判定算法 引用计数算法 给对象添加一个引用计数器,当有其他对象引用它时,计数器加1;当引用失效时,计数器减1。任何时刻计数器为0的对象就是不可能在被使用的。引用计数算法实现简单,判定效率也很高,但是很难解决对象间相互循环引用的问题。 可达性分析算法 通过一系...
深入理解java虚拟机学习笔记1.
工作2年,对这块,不曾了解,惭愧惭愧,后来在别人的推荐下、,买来看了看,感觉还不错。 记录下笔记吧。看了下书,在自己理解的程度下,将书上的例子,弄过来了。供以后没事的时候,再看。 如果不对,还麻烦各位同行指出来,不胜感激。 今天看的,是第二章java内存区域与内存溢出异常,自己用word模仿画了个图...
《深入理解Java虚拟机》学习笔记之类加载机制总结
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。其中验证、准备、解析3...
《深入理解JAVA虚拟机》——学习笔记
JVM内存模型以及分区 JVM内存分为: 1.方法区:线程共享的区域,存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 2.堆:线程共享的区域,存储对象实例,以及给数组分配的内存区域也在这里。 3.虚拟机栈:线程隔离的区域,每个线程都有自己的虚拟机栈,生命周期和线程相同。虚...
《深入理解java虚拟机》学习笔记一/类加载机制
为何要读这本书? 近期看了左萧龙大哥的单例设计模式,后文讲解到了JVM对类实例化相关知识,感觉看着很无力,不懂,于是乎买本书研究下。 如何读? 个人水平一般,理解程度有限,书中说到每章关联不是很大,所以就以目前想了解的内容读起。 本系列笔记会随着个人的理解深度随时更新,记录在这里算是一个总结吧。 本...
《深入理解java虚拟机》学习笔记——类加载机制
虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。 1、类加载的时机 类加载到虚拟机内存再直到卸载出内存,生命周期包括加载、验证、准备、解析、初始化、使用和卸载这7个阶段,其中加载、验证、准备、初始化这五个阶段是顺序进行的...
深入理解java虚拟机学习笔记-4.java类加载机制
类加载机制1. 类的加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloadin...