![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
墨玉浮白
这个作者很懒,什么都没留下…
展开
-
对象的创建、内存布局和访问定位
一、对象创建 1.虚拟机接到new指令,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用。 2.检查这个符号引用代表的类,是否已经被加载、解析、初始化过。如果没有,必须先执行响应的类加载过程。 3.在类加载检查通过后,为新生对象分配内存。对象所需的内存大小,在类加载完成后确定 二、对象的内存布局 1.对象头 **第一部分:**对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、...原创 2019-05-08 14:35:01 · 166 阅读 · 0 评论 -
Java内存区域
1.程序计数器 线程私有的内存,一块较小的内存空间,是当前程序所执行的字节码的行号指示器。字节码解释器在工作时,通过改变程序计数器的值来选取下一条字节码指令来执行。 每个线程都需要拥有独立的程序计数器,且彼此之间独立存储、互不影响,依次来保证线程切换后恢复到正确的执行位置。 如果执行的Java方法,计数器记录的是字节码指令的地址。如果是Native方法,计数器记录的是空。 2.Java虚拟机栈 ...原创 2019-05-08 15:39:14 · 113 阅读 · 0 评论 -
Java内存模型
一、目的 屏蔽各种硬件和操作系统的内存访问差异,确保Java程序在各平台下都能达到一致的内存访问效果。 二、主要目标 定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存、从内存中取出变量等底层细节。变量包含了实例字段、静态字段、构成数组对象的元素,不包含局部变量、方法参数。 Java内存模型规定了所有变量都存储在主内存中,每条线程还有自己的工作内存,工作内存中保存了被该线程使用到的变量(从...原创 2019-05-08 15:51:19 · 116 阅读 · 0 评论 -
Java类加载机制
定义 把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 类型的加载、连接、初始化过程都是在程序运行期间完成的,虽然会使类加载增加性能开销,但会为Java程序提供高度灵活性。 类的生命周期 加载、验证、准备、解析、初始化、使用、加载,其中验证、准备、解析统称连接。 ...原创 2019-05-11 18:22:55 · 123 阅读 · 0 评论 -
JVM之Java类加载器
前言 通过对Java类加载机制的了解,可以知道大概流程和各自的功能。其中类加载部分的功能是把类的Class文件读入内存,并创建java.lang.Class对象。这部分功能是由类加载器完成的。 1.类加载器分类 ①启动类加载器 由C++实现(针对HotSpot),负责将存放在 \lib目录下或Xbootclasspath参数指定的路径中的类库加载到内存中,负责加载Java的核心类。 ②其他类加载器...原创 2019-05-11 22:32:15 · 154 阅读 · 0 评论 -
垃圾回收机制
前言 这里对JVM中的垃圾回收机制的一些知识,作简单了解。 1.JVM中的年代 JVM中分为新生代和老年代。HotSpot更是把新生代划分了1个Eden区和2个Survivor区,默认比例为8:1。 一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过一次Minor GC之后,如果仍然存活,就会移步Survivor区。这些对象在Survivor区每熬过一次Minor ...原创 2019-05-12 09:33:05 · 96 阅读 · 0 评论 -
JVM中垃圾收集算法
1.标记-清除算法 最基础的垃圾收集算法,见名知意,该算法分为标记和清除两个阶段。原创 2019-05-12 09:33:41 · 119 阅读 · 0 评论 -
垃圾收集器
两个收集器之间存在连线,代表可以搭配使用。 1.Serial收集器 虚拟机运行在Client模式下默认的新生代垃圾收集器,是最基本、发展历史最悠久的收集器,是一个单线程收集器。然而“单线程”的意义并非说明它只会使用1个CPU或1个收集线程去完成垃圾收集任务,并且只要它出面,其他的工作线程必须无条件暂停、让路,直至它工作完成。 优势:简单、高效(和其他收集器的单线程比),对于限定单个CPU的环境来说...原创 2019-05-12 10:59:15 · 119 阅读 · 0 评论 -
JVM判断对象是否已死?
一、引用计数法 给对象添加一个引用计数器,但凡有一个地方引用它,就给计数器的值+1,引用失效就-1;任何时刻计数器为0的对象,不能再被使用了。主流的JVM中没有使用“引用计数法”来管理内存,主要是因为它很难解决对象间的互循环引用的问题。 二、可达性分析算法 通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始往下搜索,搜索走过的路径称为“引用链”,当一个对象到GC Roots没有任...原创 2019-05-12 11:42:42 · 183 阅读 · 0 评论