JVM笔记(4)

Stella981
• 阅读 718

第三章 垃圾收集器和内存分配策略

   第三节 垃圾收集算法

      1.分类:引用计数式垃圾收集(直接垃圾收集) 和 追踪式垃圾收集(间接垃圾收集)

      2.分代收集理论:1)弱分代假说:主要是一些朝生夕灭的对象。

                                  2)强分代假说:这里是一些可以熬过多次垃圾收集器收集的对象。

                                 3)跨代引用假说:新生代的对象可能被老年代对象引用,为了解决这个问题引入跨代引用假说。跨代引用相对同代引用较少。

      大多数商用虚拟机都是遵循分代收集理论设计。

       以下介绍的算法主要是以追踪式垃圾收集。

       1.标记-清除算法:先做把要回收的对象进行标记,然后等到标记完成之后,在进行回收的操作。反之也可以。

                   不足之处:1)执行效率不稳定,随着对象的增多,效率降低。

                                      2)回收之后,内存空间碎片化。

       2标记-复制算法:把内存分为大小相等的俩块,每次只使用这一块,当这一块内存用完,然后把存活的对象复制到另一块,最后把这一块内存全部清空。

                  不足之处:1)可以使用的内存变小一半。

                                    2)产生大量的内存复制的开销。

       3标记-整理算法:和标记-清楚算法一样先标记,然后把存活的对象整理在一起,以存活的对象为边界把其他对象全部回收。

                 不足之处:1)一旦移动对象,就需要更新对象的引用,这样是一种极为负重的操作。

未完待续!!!

点赞
收藏
评论区
推荐文章
灯灯灯灯 灯灯灯灯
3年前
阿里面试被问到【垃圾回收器】,不会怎么办??
垃圾回收器GC分类与性能指标垃圾回收器概述1.垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。2.由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。3.从不同角度分析垃圾收集器,可以将GC分为不同的类型。Java不同版本新特性1.语法层面:Lambda表达式、switch、
灯灯灯灯 灯灯灯灯
3年前
【垃圾回收】全面解析,内含面试题及图文详解!!
垃圾回收概述和相关算法1.Java和C语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要程序员手动的收集。2.垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。3.关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候
Wesley13 Wesley13
3年前
java GC算法 垃圾收集器
GC算法垃圾收集器概述垃圾收集GarbageCollection通常被称为“GC”,它诞生于1960年MIT的Lisp语言,经过半个多世纪,目前已经十分成熟了。jvm中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方
Wesley13 Wesley13
3年前
java 虚拟机 收集器 总结
java虚拟机收集器总结|垃圾收集器|新生代|老年代|jvm参
从原理聊JVM(一):染色标记和垃圾回收算法
本篇介绍了JVM中垃圾回收器相关的基础知识,后续会深入介绍CMS、G1、ZGC等不同垃圾收集器的运作流程和原理,欢迎关注。
Wesley13 Wesley13
3年前
JAVA面试考点解析(11)
9、解释内存中的栈(stack)、堆(heap)和方法区(methodarea)的用法。答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间;而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,
Stella981 Stella981
3年前
JVM优化
堆内存设置?原理?JVM堆内存分为2块:PermanentSpace和HeapSpace。?Permanent即持久代(PermanentGeneration),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。?Heap{OldNEW{Eden,from,to}},Old即
Stella981 Stella981
3年前
JVM系列篇:7种JVM垃圾收集器特点,优劣势、及使用场景
本系列会持续更新。!(https://oscimg.oschina.net/oscnet/945dbe48630eb4284fea936b19161c0f08a.jpg)今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。一、常见的垃圾收集器
Stella981 Stella981
3年前
JVM 调优参数解释
典型配置:javaXmx3800mXms3800mXmn2gXss128kXX:UseParallelGCXX:ParallelGCThreads20XX:UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。
Stella981 Stella981
3年前
JavaScript:垃圾收集机制
  JavaScript具有自动垃圾收集机制。也就是说,执行环境会负责管理代码执行过程中使用的内存。开发人员不必关心内存分配和回收问题。  垃圾收集机制的原理:找到不再继续使用的变量,然后进行释放其占用的内存。所以,垃圾收集器会按照固定的时间间隔(或代码执行中设定的收集时间)持续执行这一操作。  垃圾收集器会跟踪哪些变量有用哪些变量没用,对没用的变量