-
Java G1 垃圾回收器
以前收集器特点 年轻代和老年代是各自独立且连续的内存块。 年轻代收集使用eden+S0+S1进行复制算法。 老年代收集必须扫描整个老年代区域。 都是以尽可能少
-
JVM 常用参数
通用参数 -version -help java -showverison X 参数 -Xint:解释执行 -Xcomp:第一次使用就编译成本地代码 -Xmix
-
JVM:运行时方法区之常量池
Java 代码 public class StringTableDemo { public static void main(String[] arg
-
JVM:运行时数据区之虚拟机栈
基本内容 Java Virtual Machine Stack、Java栈、虚拟机栈。 每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧Stack
-
JVM:浅堆、深堆和保留集
浅堆 Shallow Heap。 浅堆是指一个对象所消耗的内存。 在32位系统中,一个对象引用会占据4个字节,一个int类型会占据4个字节,long型变量会占据
-
JVM:开启标量替换后仍有部分对象在堆中生成
标量替换 将普通对象中的字段拆解为基本数据类型和字符串,并且直接讲这些字段存放在线程栈中的局部变量表中,使得不用在堆中开辟空间初始化对象。避免了在堆中竞争锁去申
-
JVM:垃圾标记阶段算法之可达性分析法
可达性分析法 也叫根搜索算法、追踪性垃圾收集。 相对于引用计数算法而言,可达性分析算法不仅具备实现简单和执行高效等特点,更重要的是该算法可以有效地解决在引用计算
-
JVM:垃圾标记阶段算法之引用计数法
垃圾标记阶段 对象存活判断。 引用计数法 Reference Counting。 对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。 对于一个对
-
JVM:运行时数据区之程序计数器
名称 程序计数器、PC寄存器、Program Counter Register。 作用 用来存储指向下一条指令的地址,也即:将要执行的指令代码。由执行引擎取下一
-
JVM:类加载器
说明 基于Java11。 系统类加载器 ClassLoader systemClassLoader = ClassLoader.getSystemClassLo
-
JVM:类的加载过程
加载 Loading 通过一个类的全限定名获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类
-
Java 中的 GC Roots
判断是否会被回收 Java使用的是可达性分析法,为了解决引用计数法的循环引用问题。 引用计数法 枚举根节点做可达性分析(根搜索路径) 基本思想 以GC Ro
-
单例双重校验为什么还要加 volatile
单例代码 双重校验 + volatile public class Singleton { //防止在new对象时指令重排序 private
-
为什么匿名内部类引用外部局部变量必须要加 final 关键字
Java 代码 public class Test { public static void main(String[] args) {
-
为什么匿名内部类引用外部局部变量不用加 final 也不报错
Java 代码 匿名内部类引用了局部变量,编写代码时没有用final修饰也没有报错,因为编译器会检查后续有没有写操作,如果有,则在编译器时就会报错(包括匿名内部
-
Lombok MapStruct cannot find symbol
现象 Lombok与MapStruct一起使用时,无法获取到getter、setter方法。 解决方法 Maven插件中添加处理Lombok注解的插件。 <
-
Java 语法糖 - 增强 for 循环
本质 对于数组而言,会转换为普通for循环。 对于集合而言,会转换为iterator迭代器。 数组 对于数组而言,增强for循环本质是for(int i = 0
2022-04-28,阅读:1099,标签:Java
-
Java 语法糖 - 方法重写时的桥接方法
桥接方法 子类重写的方法的返回值可以是父类方法的返回值的子类。 本质 编译器帮忙生成了合成的桥接方法。 内部有一个重写父类相同返回值的方法,以及子类重写的返回值
2022-04-27,阅读:926,标签:Java
-
Java 语法糖 - try with resource
前提 需要实现AutoCloseable接口。 示例一 Java 代码 public class Test8 { public static void
2022-04-26,阅读:911,标签:Java
-
Java 语法糖 - switch 匹配字符串
本质 switch匹配字符串本质是先通过比较输入字符串的hashCode和分支条件对应的字符串的hashCode是否相同,相同再使用equals比较字符串是否相
2022-04-24,阅读:2188,标签:Java