JVM系列(十二):垃圾回收概述

1、垃圾

 

1.1、关于垃圾收集的三个经典问题

  • 哪些内存要回收
  • 什么时候回收
  • 怎么回收

1.2、垃圾

  • 指运行程序中没有任何指针指向的对象
  • 如果不回收,那么会一直保留到应用程序结束

1.3、为什么要GC

  • 如果不进行垃圾回收,那么内存会被消耗完
  • 在进行GC的时候,JVM可以进行碎片整理,将所占用的堆内存移到堆的一端
  • 没有GC,程序不能正常进行,有了GC又有STW,所以要不断对GC进行优化

2、早期垃圾回收

  • 早期c/c++,垃圾要手动回收,使用new申请,delete手动释放
  • 开发人员不便,如果程序员忘记回收垃圾,那么会内存泄漏,内存泄漏多了,消耗内存足够多,就会内存溢出
  1. 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;

  2. 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,其实就是自己用完了不释放,一直在引用


3、Java垃圾回收机制

  • 自动内存管理,无需程序员手动回收,降低内存泄漏和溢出风险
  • 开发人专注于业务开发
  • 但是弱化了开发人员定位内存泄漏和溢出问题的根源
  • 所以要好好学习底层,防止问题的出现
  • GC作用于方法区和堆,主要是堆
  1. 频繁回收年轻代
  2. 较少回收老年代
  3. 基本不动永久代(方法区)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值