![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
sscout
这个作者很懒,什么都没留下…
展开
-
字符串常量池
引言在JDK7之后,字符串常量池从Perm区移到了堆中,运行时常量池剩下的常量,如CONSTANT_class_info,CONSTANT_Fieldref_info 等,还存放在Perm区。在JDK8中,HotSpot移除了Perm区用Metaspace(元空间)代替,此时,字符串常量池还是存放在堆中,运行时常量池放入了Metaspace中。String的编译优化如果两个final常量相加...原创 2019-11-22 22:51:51 · 254 阅读 · 0 评论 -
内核线程,轻量级进程,用户线程
内核线程内核线程就是内核的分身,一个分身可以处理一件特定事情。这在处理异步事件如异步IO时特别有用。内核线程的使用是廉价的,唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。支持多线程的内核叫做多线程内核(Multi-Threads kernel )。内核线程只运行在内核态,不受用户态上下文的拖累。 处理器竞争:可以在全系统范围内竞争处理器资源; 使用资源:唯一使用的...转载 2019-10-23 23:09:27 · 239 阅读 · 0 评论 -
字面量、简单名称、描述符、全限定名及符号引用
1.字面量字面量表示源代码中一个固定值的表示法,比如数字1就是字面量,字符串也是字面量; Java中有整数字面量,浮点数字面量,布尔型字面量,字符字面量,字符串字面量。2.简单名称没有类型和参数修饰的方法或字段名称public class Te...转载 2019-10-14 16:38:22 · 909 阅读 · 0 评论 -
Java内部类持有外部类的引用
在Java中内部类的定义与使用一般为成员内部类与匿名内部类,他们的对象都会隐式持有外部类对象的引用,影响外部类对象的回收。通过反编译我们可以来验证这个理论。public class Outer { private String name; class Inner{ private String test; }}Outer是一个普通的类,它有一个...原创 2019-09-22 17:17:16 · 1230 阅读 · 0 评论 -
JVM 安全点介绍
什么是安全点?在 JVM 中如何判断对象可以被回收 一文中,我们知道 HotSpot 虚拟机采取的是可达性分析算法。即通过 GC Roots 枚举判定待回收的对象。那么,首先要找到哪些是 GC Roots。有两种查找 GC Roots 的方法:一种是遍历方法区和栈区查找(保守式 GC)。一种是通过 OopMap 数据结构来记录 GC Roots 的位置(准确式 GC)。很明...转载 2019-10-04 18:41:02 · 331 阅读 · 0 评论 -
G1收集器STAB详解
概述STAB全称Snapshot-At-The-Beginning,由字面理解,是GC开始时活着的对象的一个快照。它是通过Root Tracing得到的,作用是维持并发GC的正确性。 那么它是怎么维持并发GC的正确性的呢?根据三色标记算法,我们知道对象存在三种状态:白:对象没有被标记到,标记阶段结束后,会被当做垃圾回收掉,即灰色节点的子节点。 灰:对象被标记了,但是它的field还没有被...转载 2019-10-07 17:01:06 · 6371 阅读 · 2 评论