拥有 垃圾回收他 标签的文章 共 1 条数据

JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
技术杂谈

JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)

3318次浏览 0条评论

一、 技术背景你要了解吧  按照套路是要先装装X,谈谈JVM垃圾回收的前世今生的。说起垃圾回收(GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,早在1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术。设计和优化C++这门语言的专家们要长点心啦~~二、 哪些内存需要回收?  猿们都知道JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而Java堆区和方法区则不一样、不一样!(怎么不一样说的朗朗上口),这部分内存的分配和回收是动态的,正是垃圾收集器所需关注的部分。  垃圾收集器在对堆区和方法区进行回收前,首先要确定这些区域的对象哪些可以被回收,哪些暂时还不能回收,这就要用到判断对象是否存活的算法!(面试官肯定没少问你吧)2.1 引用计数算法2.1.1 算法分析  引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对