Java 垃圾回收—基本过程

  • 时间:2018-12-25 22:39 作者:晚夜星辰 来源:晚夜星辰 阅读:635
  • 扫一扫,手机访问
摘要:支持Java语言的运行时系统,具备自动管理内存的功能,从而化解了C/C++程序员特别苦恼的内存管理问题,而自动化内存管理的核心便是自动垃圾回收。什么是自动垃圾回收?????自动垃圾回收是一种清除堆内存中无用对象的机制。该机制能够找出堆内存中哪些对象正在被使用,哪些对象不会被使用,并将后者进行删除。所

????支持Java语言的运行时系统,具备自动管理内存的功能,从而化解了C/C++程序员特别苦恼的内存管理问题,而自动化内存管理的核心便是自动垃圾回收。

什么是自动垃圾回收?

????自动垃圾回收是一种清除堆内存中无用对象的机制。该机制能够找出堆内存中哪些对象正在被使用,哪些对象不会被使用,并将后者进行删除。所谓正在被使用的对象指的是尚有引用的对象,即是说程序执行到目前为止,依然有指针指向该对象。而未被使用的对象,是指从当前开始,将不会再有任何指针指向该对象,因而该对象占用的内存需要被回收利用。

? ? 在使用不支持自动垃圾回收的程序语言时(例如:C和C++),程序员需要手动申请和释放内存。而支持自动垃圾回收语言的运行时系统,一般会有垃圾回收器,以代替程序员进行内存管理。本文接下来将阐述自动垃圾回收机制的基本过程。

第一步:标记

? ? 自动垃圾回收的第一步是标记出当前堆内存中哪些对象正在被使用,哪些将不会再被使用。并分别进行标记,如下图中所示,其中蓝色部分表示正在被使用的对象,橙色表示不再被使用的对象。垃圾回收器需要进行扫描检查才能知道对象的使用情况,而假如每次都对系统中所有对象进行检查,将会消耗大量时间。

第二步:清理

? ? 这一步会将对标记出的不再被使用的对象进行删除,同时内存分配器会接管可用内存,以供分配新对象时使用。删除后的示用意,如下图所示。

第二步:压缩

????为了进一步提升性能,在删除掉未被使用的对象后,还需要将剩下的正在被使用的对象移动到一起(压缩),这样即可以更简单快捷地分配新对象了。压缩后的示用意,如下图所示。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|软件环境】梦幻仙域游戏攻略(2023-12-19 10:02)
【系统环境|软件环境】梦幻仙域游戏攻略(2023-12-19 10:02)
【系统环境|】卡帕部落揭秘潮玩新宠,探究玩法(2023-12-14 09:45)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】如何开发搭建卡帕部落模式源码(2023-12-12 10:44)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
手机二维码手机访问领取大礼包
返回顶部