JVM
文章平均质量分 91
想当厨子的程序媛
前期追深度,否则会华而不实,后期追广度,否则会坐井观天;
展开
-
JVM(4)——垃圾收集与引用类型(强、软、弱和虚引用)
这里会记录 《深入理解java虚拟机》的所有知识点哟~概述java内存运行时区域的各个部分,其中程序计数器、虚拟机栈和本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行者出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具有确定性,在这几个内存内就不需要过多考虑回收的问题,因为方法结...原创 2018-05-03 15:18:59 · 177 阅读 · 0 评论 -
JVM(10)——类加载器与双亲委派模型
类加载器对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性。这句话表达得更通俗一些就是:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载地前提下才有意义,否则,即使这两个类来源于同一个class文件,只有加载它们地类加载器不同,那这两个类就必定不相等。双亲委派模型站在Java虚拟机的角度,只存在两种不同地类加载器:一种是启动类加载器...原创 2018-05-21 12:55:33 · 198 阅读 · 0 评论 -
JVM(9)——类加载机制
这里会记录 《深入理解java虚拟机》的所有知识点哟~1. 类加载的时机(1)类加载过程的顺序类的整个生命周期:加载、验证、准备、解析、初始化、使用和卸载,7个阶段。其中:验证、准备、解析这三个阶段统称为连接。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,但是解析阶段的顺序不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持java语言的运行时...原创 2018-05-21 11:33:30 · 167 阅读 · 0 评论 -
JVM(7)——垃圾收集器
垃圾收集器HotSpot虚拟机的垃圾收集器图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。并发与并行并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态并发:指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能回交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上1. Serial 收集器...原创 2018-05-06 12:48:47 · 179 阅读 · 0 评论 -
JVM(3)——JVM中的内存溢出(OutOfMemoryError异常)
这里会记录 《深入理解java虚拟机》的所有知识点哟~ 本篇文章的目的: 通过代码验证Java虚拟机规范中描述的各种运行时区域存储的内容 希望在工作中遇到实际的内存溢出异常时,能根据异常信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后应该如何处理 在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存...原创 2018-04-27 16:14:14 · 235 阅读 · 0 评论 -
Java面试——JVM
1. JVM如何加载一个类过程类加载过程:加载验证 验证阶段作用是保证Class文件的字节流包含的信息符合JVM规范,不会给JVM造成伤害准备 准备阶段为变量分配内存并设置类变量的初始化解析 解析过程是将常量池内的符号引用转换为直接引用初始化2. 双亲委派模型的概念与方法双亲委派是指:如果一个类收到类加载的请求,不会自己先尝试加载,先找父类加载器去完成。当顶层...原创 2018-05-11 14:11:39 · 208 阅读 · 0 评论 -
JVM(2)——HotSpot虚拟机:对象创建、对象内存布局、对象的访问定位
对象的创建步骤1:检查。虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。步骤2:分内存。在类加载检查通过后,JVM将会为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分...原创 2018-04-26 17:37:05 · 251 阅读 · 0 评论 -
JVM(1)——JVM内存区域
这里会记录 《深入理解java虚拟机》的所有知识点哟~ JVM结构图JVM = 类加载器 + 执行引擎 + 运行时数据区类加载器(Class Loader):把硬盘上的class文件加载到JVM中的运行时数据区域,它不负责这个类文件是否能够执行执行引擎(Execution Engine):负责这个类文件是否能够执行。执行字节码,或者执行执行本地方法运行时数...原创 2018-04-26 16:22:46 · 184 阅读 · 0 评论 -
JVM(6)——GC日志与实例分析
这里会记录 《深入理解java虚拟机》的所有知识点哟~ 预备知识JVM中的老年代与新生代JVM中分为老年代和新生代。一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会移到Survivor区。对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被...原创 2018-05-03 18:43:18 · 208 阅读 · 0 评论 -
JVM(5)——垃圾收集算法
这里会记录 《深入理解java虚拟机》的所有知识点哟~标记——清除算法最基础的收集算法是“标记——清除”算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象在标记完成后统一回收所有被标记的对象该算法的缺点效率问题:标记和清除两个过程的效率都不高空间问题:标记清楚后产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大...原创 2018-05-03 16:13:10 · 124 阅读 · 0 评论 -
JVM(11)——运行时栈帧结构
1. 概述“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能有解释执行和编译执行两种选择,也可能两者兼备,甚至还...原创 2018-05-21 17:55:39 · 757 阅读 · 0 评论