公众号
-
全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~
-
大数据技术与架构或者搜索import_bigdata关注~
-
海量【java和大数据的面试题+视频资料】整理在公众号,关注后可以下载~
JVM内存回收机制简述
JVM内存回收机制涉及的知识点太多了,了解越多越迷糊,汗一个,这里仅简单做个笔记,主要参考《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》
目前java的jdk默认虚拟机为HotSpot,因此本文涉及虚拟机相关内容都指HotSpot虚拟机
本文主要关注GC的回收:判断哪些对象可回收,如何回收,回收机制
判断哪些对象可回收
GC是通过对象是否存活来决定是否进行回收,判断对象是否存活主要有两种算法:引用计数算法、可达性分析算法
引用计数算法
引用计数的算法原理是给对象添加一个引用计数器,每被引用一次计数器加1,引用失效时减1,当计数器0后表示对象不在被引用,可以被回收了,引用计数法简单高效,但是存在对象之间循环引用问题,可能导致无法被GC回收,需要花很大精力去解决循环引用问题
可达性分析算法
可达性分析的算法原理是从对象根引用(