GC算法

GC算法包括:

  1. 新生代: 标记清除算法(mark-sweep),复制算法(copying)
  2. 老年代:标记整理算法(mark-compact)

标记清除算法

分为标记和清除两部分,首先标记需要回收的对象,然后统一回收对象空间。

必须使用空闲列表方式分配内存。

缺点:

  • 标记和清除效率不高
  • 产生大量内存碎片,在分配大内存对象时即使有较多剩余内存也会提前触发GC

复制算法

将内存分为两块,只使用其中一块。GC时,首先标记需要回收的对象,然后将存活对象统一转移到另一半内存中。

实现简单,没有内存碎片,使用指针碰撞方式分配内存即可。

HotSpot虚拟机实际实现会将新生代内存分为三部分,eden区和survivor区*2,eden与survivor区的默认大小比例为8:1,每次使用eden区和1个survivor区。保证内存使用率为90%。

标记整理算法

要把大象放冰箱,统共分三步

  1. 标记需要回收的对象
  2. 将存活对象向内存一侧复制
  3. 回收剩余未被使用的内存
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容