摘要: JVM垃圾回收的算法很多,但是不管是哪种算法,在进行GC时大致的流程都是差不多的,主要有以下3个过程: ###1. 枚举根节点 这个过程主要是找到所有的GC Roots对象,这些对象一般发生在JVM虚拟机栈栈帧、常量池中的静态对象、方法区中静态类属性引用、本地方法栈中引用的对象。这个过程会发生STW 阅读全文
posted @ 2020-07-14 07:54 PinXiong 阅读(814) 评论(0) 推荐(0) 编辑
摘要: 在多线程的情况下,ThreadLocal提供了一个种为每个线程访问相同的变量,并且线程对变量的更新互不影响的机制。也是对象实现线程安全的一种方式。 ###ThreadLocal的实现机制 我们常用的方法有get、set和initialValue,这次将会围绕这几个方法的源码进行深入解析 get方法 阅读全文
posted @ 2020-07-14 07:54 PinXiong 阅读(219) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成为若干个不同的数据区域。 程序计数器(Program Counter Register) 每一个线程都有一个程序计数器,各线程之间互不影响,独立存储,属于线程的私有内存。如果线程正在执行一个Java方法,这个计数器记录的是正在执行的虚拟 阅读全文
posted @ 2020-07-14 07:53 PinXiong 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 在Java虚拟机中,如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。一共有4类引用: 强引用(Strong Reference) 类似Object obj = new Object()这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用 阅读全文
posted @ 2020-07-14 07:53 PinXiong 阅读(204) 评论(0) 推荐(0) 编辑