JVM深入学习(十三)-垃圾回收概念

1. 垃圾的定义

什么是垃圾?
运行程序中没有任何指针指向的对象

2. 为什么要垃圾回收

  1. 垃圾不回收的情况下,内存空间迟早会被占用完,影响应用程序的正常运行
  2. 垃圾回收可以进行内存碎片整理,保证大空间对象的分配

3. 早期的垃圾回收

在c/c++中都是使用手动垃圾回收的方式进行垃圾回收
具体的说: 使用new申请内存,使用delete回收内存

4. Java的内存管理机制

java使用自动内存管理的方式来对内存进行操作,内存的分配和回收都由java实现,不用开发人员手动分配及回收.
相较于c/c++来说,极大的省略了开发的复杂度,开发人员也无需担心忘记回收内存而导致的内存泄露问题.
可以称java为 (c++)–,减配版的c++,此处的减配意思是 1. 复杂度减小,不用关心内存回收 2. 手动回收相较于自动回收在某种程度上可能会有更好的性能,从这个角度说java是c++的减配版本

5. Java自动内存管理存在的问题

java使用垃圾回收器自动回收垃圾,那么相应的,开发人员对应内存分配和回收的能力就可能变弱,在发生内存泄露/内存溢出问题时,可能无法及时的找到问题
需要借助于一些监控工具,分析java的内存情况.

6. 垃圾回收的工作范围

垃圾回收主要针对堆和方法区
栈只有入栈和出栈操作,不存在垃圾回收,但是存在内存溢出问题
程序计数器不存在垃圾回收也不存在内存溢出问题

垃圾回收的分代机制:

  1. 主要针对新生代 YGC
  2. 较少针对老年代 MinorGC
  3. 基本不针对永久代(元空间) FULLGC

7. 垃圾回收的阶段

垃圾回收分为标记阶段清除阶段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhang.yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值