面试
文章平均质量分 89
锋君
这个作者很懒,什么都没留下…
展开
-
GC 基础
如何定位垃圾 1. 引用计数法 为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。 2. 根可达算法(可达性分析算法) 以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收。 Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般包含以下内容:原创 2021-08-27 15:19:34 · 122 阅读 · 0 评论 -
volatile
volatile 如何来保证可见性? 当有 volatile 变量修饰的共享变量进行写操作时会多出一行汇编代码。 lock add1 .. ... 通过查 IA-32 架构软件开发者手册可以知道,lock 前缀的指令在多核处理器下会发生 两件事。 将当前处理器缓存行的数据写回到系统内存。 这个写回内存的操作会使其他cpu里缓存了该内存地址的数据无效。 为了提高处理速度,处理器不直接和内存进行通信,而是先将系统内存的数据读到内部缓存(L1、L2 或其他)后再进行操作,但操作完不知道何时会写到内存。如果声原创 2021-08-17 09:54:14 · 99 阅读 · 0 评论