了解有关Java中自动垃圾回收的基本信息。

翻译自:https://dzone.com/articles/java-garbage-collection-2

使用new运算符动态创建的对象将自动释放。实现此目的的技术称为垃圾收集。它的工作方式如下:当不存在对对象的引用时,假定不再需要该对象,并且可以回收该对象占用的内存。

自动垃圾收集如何工作?

自动垃圾收集的工作原理是查看堆内存,识别哪些对象被引用,哪些不被引用,以及删除未使用的对象。这被广泛称为“ 标记和扫描算法”

解除分配内存的过程由垃圾收集器自动处理,分两步:

第1步:标记

这是垃圾回收器标识正在使用的内存片段和未使用的内存片段并标记不再引用的对象的第一步。

垃圾收集标记

第2步:删除

在此步骤中,将删除步骤1中不再引用的所有标记对象并回收内存。

这可以用两种类型完成:

2a)正常删除

在此删除中,内存分配器保存对可以分配新对象的可用空间块的引用,如下图所示。

垃圾收集 - 正常删除

2b)压缩删除

在此过程中,除了删除未引用的对象之外,不仅仅是从内存中删除对象,还会压缩剩余的对象以进一步提高性能。通过将引用的对象移动到一起,这使得新的内存分配更加容易和快速。

垃圾收集 - 紧凑删除

来源: Oracle Java Docs

有关垃圾收集如何工作的更多信息,请参阅此  Oracle Java Docs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章