【深入理解JVM 七】JVM垃圾回收机制

前边几篇Blog分别介绍了JVM的类加载机制、运行时数据区域,字节码的执行,在执行完成后程序发挥完了自己的作用,线程独有的程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,而线程共享的堆和方法区却不可以,需要进行垃圾回收,这就用到了我们的JVM垃圾回收机制。
在这里插入图片描述

垃圾回收机制

首先提出三个问题:1,哪些内存需要回收? 2,什么时候回收? 3,如何回收?基于这三个问题分别详细展开进行介绍。

垃圾回收范围

回收区域在JDK1.8之前主要集中在Java堆和方法区

  • 程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,所以不需要考虑回收
  • Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期间时才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存<
已标记关键词 清除标记
JVM 的内存模型和 JVM垃圾回收机制一直是 Java 业内从业者绕不开的话题(实际调优、面试),Jack 和大家再来一起学习一下 JVM垃圾回收机制。作为 Java 从业者如果不掌握这些知识点可能很难跳过高级走向架构师阶段。 本场 Chat,作者将会围绕 JVM 的内存模型,JVM垃圾回收JVM 的参数设置和如何监控这四个话题展开。通过本场 Chat 相信大家会学会如下内容: 1. JVM 内存模型是什么样的,都存什么? 2. JVM垃圾回收机制是什么?都有哪些算法? 3. JVM垃圾回收对应的参数有哪些?如何去设置? 4. JVM 生产监控的指标有哪些? 5. 轻松应对 JVM 的面试和实际工作。 通过本场 Chat 希望能和大家一起提升和学习。 实录内容提要: 1. 递归和 for 循环分别影响的是哪块内存? 1. 垃圾回收的触发时机是什么? 1. 如何判断一个对象该不该回收? 1. 对象四种引用方式是什么,在什么场景用到? 1. -D -XX -X 有什么区别? 1. 问题默认开启的是哪个 GC ? 1. 我们一般需要关注的参数有哪些? 1. 实际生产环境你们设置了哪些参数? 1. 监控的工具有哪些? 1. Java 8 引入了元空间,元空间和永久代有什么不一样?元空间和永久代可以理解为方法区的不同实现吗? 1. 国外有哪些一手JVM资料的获取途径?尤其是在 JVM 规范、 HotSpot 实现方面? 1. 既然实际中很少去配 JVM 参数,为什么面试的时候还总问 JVM 优化的问题?如果缺乏 1. JVM 调优经验,面试中该如何应对? 1. 能否把对 JVM 的监控集成到系统里面? *当前内容版权归码字科技所有并授权显示,盗版必究。[阅读原文](http://gitbook.cn/gitchat/activity/5aa53c73fa9584265fa3db68)*
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值