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

垃圾回收机制

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

垃圾回收范围

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

  • 程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,所以不需要考虑回收
  • Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期间时才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存<

【深入理解JVM 七】JVM垃圾回收机制相关推荐

  1. python垃圾回收机制原理_如何理解和掌握Python垃圾回收机制?

    在编程世界里,当一个对象失去引用或者离开作用域后,它就会被当做垃圾而被自动清除,这就是垃圾回收机制.在现在的高级语言如Python.Java都使用了垃圾回收机制,不过与Java采用的垃圾收集机制不同, ...

  2. JVM GC(垃圾回收机制)

    在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行.当st ...

  3. JVM优化和垃圾回收机制

    一.垃圾回收机制概念 不定时去堆内存中清理不可达对象.不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是 ...

  4. JVM GC(垃圾回收机制)Minro GC,Major GC/Full GC

    在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行.当st ...

  5. 【JVM】Java垃圾回收机制(GC)详解

    Java垃圾回收机制(GC)详解 一.为什么需要垃圾回收? 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配不回收,但是事实并非如 ...

  6. JVM 架构解释 + 垃圾回收机制 详解(基于JDK8版本)

    文章目录 1. JVM 内存结构 2. JVM 之 堆 3. JVM 之 垃圾回收器(GC, Garbage Collector) 3.1 垃圾回收器 分类 + 组合方式 3.2 年轻代的 垃圾处理器 ...

  7. Java Jvm 中的垃圾回收机制中的思想与算法 《对Java的分析总结》-四

    Java中的垃圾回收机制中的思想与算法 <对Java的分析总结>-四 垃圾回收机制 中的思想与算法 引用计算法 给对象中添加一个引用计数器,每当一个地方引用它的时候就将计数器加1,当引用失 ...

  8. JS闭包的简单理解。优缺点以及垃圾回收机制

    闭包是什么? ·了解闭包首先了解js的'链式作用域'结构,对象可以一级一级的向上查找父对象的变量,所以父对象的变量对子对象可见,反之不成立:所以都可以访问全局变量 ·为了解决函数外部无法访问函数内局部 ...

  9. JVM中的垃圾回收机制

    文章目录 一.什么是垃圾回收 二.为什么需要垃圾回收 三.java中的四种引用类型 四.垃圾识别机制 1.引用计数算法 2.可达性分析算法 五.finalize()赋予对象重生 流程图(finaliz ...

  10. JVM架构和垃圾回收机制深入理解

    "七月的风,八月的雨,卑微的我,喜欢遥远的你" ,第一次听到这句歌词时,就很喜欢它,因为喜欢所以卑微,因为喜欢所以低到尘埃,就如张爱玲所说的,"见了他,她变得很低很低,低 ...

最新文章

  1. 视觉导航的神经拓扑SLAM
  2. grep 在HP-UX下的递归查找
  3. macos nginx php mysql_mac环境下搭建nginx + php + mysql开发环境
  4. 【物理方程】物理学中最难的方程之一,你知道多少?
  5. 缓存框架(Java缓存)与框架缓存(介绍mybatis缓存)
  6. 学习:C#中的空值的判断(转)
  7. java main 参数传递参数_Java千问:Java语言如何给main方法传递参数?
  8. spring FactoryBean的知识应用和Beanfactory的区别
  9. 软件测试管理工具alm,惠普最新测试管理工具 HP ALM 11.0 详细介绍
  10. 黑莓开发之经典九宫格设计
  11. 采用通信方式控制台达B2伺服驱动器运行在速度模式
  12. 数据库系统工程师学习记录(计算机系统知识)
  13. java连接hsql数据库_访问Hsql .data数据库文件
  14. 深度学习——李宏毅第一课2020
  15. ubuntu 开机黑屏解决办法
  16. 当元气森林卖咖啡,能否再造一个爆款?
  17. Dicom 文件 转成 JPG 格式(批量处理)
  18. 计算机关机速度,高手教你摆平Win7关机速度慢的技巧
  19. 树莓派安装Google拼音输入法
  20. 计算机打开及关闭软件教案,计算机操作与应用教案.doc

热门文章

  1. 微信小程序客服消息之解决方案
  2. 如何定制虚拟机smbios信息
  3. Autodesk.ArtCAM.Premium.2017.Suite.build110.Multilang.Win64 1DVD
  4. 如何让代码看起来有万佛朝宗的气势
  5. 用户画像的方法与案例——从具象到抽象
  6. C++\OpenGL\QT 房源管理系统
  7. pureftpd mysql.conf_pureftpd-mysql.conf配置文件
  8. strcmp 区分大小写么_C语言strcmp()函数:比较字符串(区分大小写)
  9. SQLServer RANK() 排名函数、其他相关函数
  10. 用html5做一个介绍自己家乡的页面_【基础教程全】Html5视频教程