《深入理解java虚拟机 第二版 JVM高级特性与最佳实践》里面提到 CMS 垃圾收集器。 CMS 垃圾收集器的垃圾回收分4个步骤: 初始标记(initial mark) 有 STW 并发标记(concurrent mark) 没有 STW 重新标记(remark) 有 STW 并发清除(concu ...
分类:
其他好文 时间:
2020-07-01 12:47:01
阅读次数:
104
1、内存结构: 2、根据《深入理解Java虚拟机》第二章整理知识点(xmind) ...
分类:
编程语言 时间:
2020-06-30 10:33:28
阅读次数:
48
为什么有这篇文章? 最初在看周志明大大的《深入理解java虚拟机 第二版》时,看到第8章下面的 方法调用-分派 这一小节,当时只理解了java语言的方法重载是静态分派,而方法重载是动态分派,而对动态分派的字节码指令实现 invokevirtual 理解得很费劲。 现在想起来,根本原因有二: 第一,那 ...
分类:
编程语言 时间:
2020-06-27 10:10:43
阅读次数:
75
看《深入理解Java虚拟机》中传统垃圾收集器(非G1)使用记忆集(Remembered Set)来处理跨代引用时根节点枚举的问题。里边说到 在新生代上建立一个全局的称为记忆集的数据结构,这个结构把老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生 Minor GC 时,只有包含了跨 ...
分类:
编程语言 时间:
2020-06-25 16:05:02
阅读次数:
90
访问类的静态属性与类的初始化 验证 现有SuperClass类,其源码如下: public class SuperClass { public static String staticVariable = "hello "; public static final String STATIC_CON ...
分类:
其他好文 时间:
2020-06-24 23:45:26
阅读次数:
55
JVM GC 总结。 周志明大大的《深入理解Java虚拟机》出第三版了,早早的买了这本书,却一直没有花时间看。近来抽空温习了一下,感觉又有了新的收获。这里简单总结下。 GC的由来 由于堆的动态性,操作系统将堆交由给了开发者自己管理,手动申请,手动释放。对于C++,则是将这个权限继续交给了开发者,而对 ...
分类:
其他好文 时间:
2020-06-22 18:50:05
阅读次数:
62
1. 元注解@Inherited继承 package com.example.demo; import java.lang.annotation.*; import java.util.Arrays; public class Test { public static void main(Strin ...
分类:
编程语言 时间:
2020-06-13 21:12:40
阅读次数:
62
1、概述 1.1、JVM规范 试图 定义一种java内存模型(JMM) 来 屏蔽掉各种硬件和OS的内存访问差异,以 实现 让java程序在各种平台下都达到一致的并发效果; 1.2、JDK1.5后,JMM 已经成熟和完善; 2、主内存 与 工作内存 2.1、JMM 的主要目标: 定义 程序中各个变量的 ...
分类:
编程语言 时间:
2020-06-10 13:23:51
阅读次数:
55
前提 笔者很久之前就有个想法:参考现有的主流ORM框架的设计,造一个ORM轮子,在基本不改变使用体验的前提下把框架依赖的大量的反射设计去掉,这些反射API构筑的组件使用动态编译加载的实例去替代,从而可以得到接近于直接使用原生JDBC的性能。于是带着这样的想法,深入学习Java的动态编译。编写本文的时 ...
分类:
编程语言 时间:
2020-06-06 11:07:49
阅读次数:
50
线程安全 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个variabl ...
分类:
编程语言 时间:
2020-05-31 18:14:57
阅读次数:
108