《深入理解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
JVM GC 总结。 周志明大大的《深入理解Java虚拟机》出第三版了,早早的买了这本书,却一直没有花时间看。近来抽空温习了一下,感觉又有了新的收获。这里简单总结下。 GC的由来 由于堆的动态性,操作系统将堆交由给了开发者自己管理,手动申请,手动释放。对于C++,则是将这个权限继续交给了开发者,而对 ...
分类:
其他好文 时间:
2020-06-22 18:50:05
阅读次数:
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
本文来自作者投稿(原作者:小胖儿),原作者是一位2021届本科毕业生,就读于一所双非(非985、非211)院校,在今年2月份的时候,我曾经帮他指导过简历,并且根据他的简历内容帮他提了一些可能会问到的问题。 4月份的时候说是已经通过了阿里的四面,最近又得知已经顺利的拿到了阿里的Offer,非常为他感到 ...
分类:
其他好文 时间:
2020-05-27 12:02:13
阅读次数:
68
2020-05-21 22:42:36 1.1.1 程序计数器 内存空间小,内存私有,字节码解释器工作就是通过这个计数器的值来选取下一条需要执行指令的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖计数器完成。 1.1.2 Java 虚拟机栈 线程私有,生命周期和线程一致。描述的 ...
分类:
编程语言 时间:
2020-05-22 00:12:20
阅读次数:
68
参考:https://mp.weixin.qq.com/s/DZkGRTan2qSzJoDAx7QJag 建议阅读:《深入理解Java虚拟机》相关章节 多线程下的 原子性 可见性 指令重排序 无法保证(单线程 可以保证) static int mainMemoryVariable=0; 线程1: m ...
分类:
编程语言 时间:
2020-05-21 21:06:23
阅读次数:
50
title: 深入理解Java虚拟机 date: 2020 05 14 10:58:24 tags: JVM,虚拟机 [TOC] 1.运行时数据区域 1.程序计数器 当前线程执行字节码的行号指示器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法,则为空) 2.虚拟机栈 虚拟机栈描述的 ...
分类:
编程语言 时间:
2020-05-19 22:46:31
阅读次数:
72