垃圾回收(GC)

本文介绍了Java中的垃圾回收,包括其防止内存泄漏的作用、回收的内存类型、垃圾识别的引用计数和可达性分析方法,以及经典的标记-删除、复制和标记-整理算法。文章还探讨了分代回收策略,如何根据对象的年龄划分新生代和老年代,以优化内存管理。
摘要由CSDN通过智能技术生成

什么是垃圾回收

垃圾回收,回收的是内存。
系统的内存总量是一定的,程序在使用内存的时候必须先申请,再使用,用完之后进行释放。申请内存的时机比较明确需要的时候就进行申请,但是内存释放的时机却不太确定,我们不知道这个内存是否还要继续使用。如果忘记释放内存,就会出现"内存泄漏“的问题。一旦出现”内存泄漏“就会非常难以调试,那么有那些发放可以进行反制。
在Java中可以通过"垃圾回收"机制进行反制。
对于垃圾回收机制来说,无论是谁申请的都由统一的人来负责释放(JVM中统一进行释放,就是由JVM内部的一组专门负责垃圾回收的线程来进行这样的工作)
垃圾回收机制
优点:能够非常好的保证不出现内存泄漏的情况。
缺点:

  1. 需要消耗额外的系统资源。
  2. 内存的释放可能存在延迟。
  3. 可能会导致出现STW问题

Java的垃圾回收回收的内存是那些

JVM中的内存主要有堆区,方法区,栈区,程序计数器。
堆区和方法区是垃圾回收机制要释放的内存,尤其是堆区。
栈区和程序计数器内存都是和具体的线程绑定在一起的,代码块结束/线程结束,内存就会自动释放。
像我们日常讨论的垃圾回收主要是对堆上完全不使用的内存进行回收。

垃圾回收是如何进行回收

找出垃圾

引用计数

Test a=new Test(),此时认为new Test()这个对象就有一个引用指向

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值