Java工程师必知词汇:GC-阿里云开发者社区

开发者社区> Java开发者> 正文
登录阅读全文

Java工程师必知词汇:GC

简介: 垃圾回收(Garbage Collection,缩写为GC),在计算机科学中是一种自动的存储器管理机制。当一个电脑上的动态存储器不再需要时,就应该予以释放,以让出存储器,这种存储器资源管理,称为垃圾回收。

|名词定义|


垃圾回收(Garbage Collection,缩写为GC),在计算机科学中是一种自动的存储器管理机制。当一个电脑上的动态存储器不再需要时,就应该予以释放,以让出存储器,这种存储器资源管理,称为垃圾回收。

垃圾回收器可以让程序员减轻许多负担,也减少程序员犯错的机会。垃圾回收最早起源于LISP语言。当前许多语言如Smalltalk、Java、C#和D语言都支持垃圾回收器。

|特点|


垃圾回收器有两个基本的原理:

1.考虑某个对象在未来的程序运行中,将不会被访问。

2.向这些对象要求归回存储器。

垃圾空间指的就是没有任何栈内存所指向的堆内存空间,所有的垃圾将被GC不定期进行回收并且释放无用内存空间,但是如果垃圾过多,一定将影响到GC的处理性能,从而降低整体的程序性能。

|Java中GC的实现|


Java中的GC使用分代收集(generation collection),依照对象存活时间的长短使用不同的垃圾收集算法,以达到最好的收集性能。
整个Java堆可以切割成为三个部分:

1.Young:
-Eden:存放新生对象。
-Survivor:存放经过垃圾回收没有被清除的对象。
-semi-Spaces:和Survivor做Copying collection。

2.Tenured:对象多次回收没有被清除,则移到该区块。

3.Perm:存放加载的类别还有方法对象。

Java不同的世代使用不同的GC算法。

1.Minor collection:YOUNG世代使用将Eden还有Survivor内的数据利用semi-space做复制收集(Copying collection),并将原本Survivor内经过多次垃圾收集仍然存活的对象移动到Tenured。

2.Major collection则会进行Minor collection,Tenured世代则进行标记压缩收集。

|参考资料|


[1] 阿里云大学Java视频课程
[2] Java开发者
[3] 维基百科

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
Java开发者
使用钉钉扫一扫加入圈子
+ 订阅

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

官方博客
官网链接