JVM
zyk1.
愿你历尽千帆 归来仍是少年
展开
-
JVM运行时数据区 --- 堆
JVM运行时数据区 — 堆堆的核心概述首先 我们先了解堆空间位于运行时数据区的哪一个位置在这里我们强调一个概念 一个进程对应一个JVM实例 一个JVM实例对应一个运行时数据区 运行时数据区独立的只有一个方法区和一个堆 也就是说一个进程里的多个线程要共享一个方法区和堆空间 而每个线程各自拥有一份程序计数器 本地方法栈 和 虚拟机栈Java虚拟机规范中对Java堆的描述是 所有的对象实例和数组都应该在运行时分配在堆上数组和对象可能永远不会存储在栈上 因为栈帧当中保存引用 这个引原创 2020-07-05 12:48:02 · 312 阅读 · 0 评论 -
垃圾回收器
垃圾收集器7款经典垃圾收集器与垃圾分代之间的关系垃圾收集器的组合关系(更新到JDK14)Serial 回收器 串行回收在HotSpot虚拟机中 使用 -XX: UseSerialGC 可以指定年轻代和老年代都使用串行收集器等价于 新生代使用Serial GC 且老年代使用Serial Old GCSerial 收集器是一个新生代的垃圾收集器Serial 收集器采用复制算法 串行回收和stop-the-world机制Serial Old收集器也采用串行回收和stop-t原创 2020-07-05 12:40:32 · 256 阅读 · 0 评论 -
GC的4种算法
GC的4种算法复制算法我们先来看一张原理图明确发生的作用域年轻代中采用的Minor GC 这种GC算法采用的复制算法过程分析当GC开始后 对象只会存在于Eden和From区 而To区是空的 紧接着进行GC Eden中所有存活的对象和From中没有到阈值的对象被复制到To区 这个时候Eden和From区的对象已经被清空了 这个时候From和To区会交换他们的角色 也就是新...原创 2020-04-21 19:11:22 · 1402 阅读 · 0 评论 -
OOM异常后GC收集日志信息
OOM异常后GC收集日志信息我们先对-Xms -Xmx等参数做一个设置 方便来出现OOM异常(我们将堆的大小设定为10m)我们的测试代码package com.zyk;import java.util.Random;public class JVMTest { public static void main(String[] args) throws Exception{...原创 2020-04-21 14:33:59 · 590 阅读 · 0 评论 -
JVM运行时数据区之---虚拟机栈
JVM运行时数据区之—虚拟机栈我们首先来看一下运行时数据区的大体结构 了解虚拟机栈处于运行时数据区的哪一部分我们初步对于虚拟机栈有了一个了解 下面我们对它做一个深入一点的学习Java虚拟机栈是什么定义主管Java程序的运行,线程独享(私有)生命周期 随着线程的创建而创建,随着线程的消亡而消亡,不会被GC回收注意 每个线程在创建的时候都会创建一个虚拟机栈 每一个虚拟机栈的内部保...原创 2020-04-16 17:19:44 · 173 阅读 · 0 评论 -
双亲委派机制
双亲委派机制首先我们认识一下双亲委派机制我们来一个代码案例package com.zyk;public class Test { public static void main(String[] args) { Test test=new Test(); System.out.println(test.getClass().getClassLoa...原创 2020-04-15 11:11:18 · 157 阅读 · 0 评论 -
Java 类的初始化和实例的初始化
Java 类的初始化和实例的初始化类的初始化一个子类初始化要先初始化他的父类一个类初始化就是执行方法这里我们注意 这里的初始化是对静态变量和静态代码块进行初始化 而他们两执行的先后顺序就是看谁写在前面 谁写在后面实例的初始化实例的初始化就是执行方法方法由3部分组成 分别是 非静态的实例变量 非静态代码块 对应构造器代码组成非静态实例变量的赋值和非静态代码...原创 2020-04-14 18:14:39 · 282 阅读 · 0 评论