垃圾回收器有哪些?是一个高频的面试题,那本文就详细来解答这个问题。因为不同的厂商(IBM、Oracle),实现的垃圾回收器各不相同,而本文要讨论的是Oracle的HotSpot虚拟机所使用的垃圾回收器。常用垃圾回收器,如下图所示:新生代回收器:Serial、ParNew、ParallelScavenge老年代回收器:SerialOld、ParallelOld、CMS整堆回收器:G1其中相互连线的垃
分类:
其他好文 时间:
2020-08-02 10:17:00
阅读次数:
76
Java整个堆大小设置 Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍 永久代PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。 永久区并不是老年代的1.2到1.5倍,而是FullGC后永久区的1.2到1.5倍 1.2x ...
分类:
其他好文 时间:
2020-07-20 13:18:36
阅读次数:
68
新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。 老年代GC(MajorGC/Full GC):指发生在老年代的GC,出现了MajorGC,经常会伴随至少一次的Minor GC,MaiorGC的 ...
分类:
其他好文 时间:
2020-07-19 16:25:20
阅读次数:
60
版权声明:源出处:尚硅谷JVM 博客来源于大佬整理 年轻代与老年代 1.存储在JVM中的java对象可以被划分为两类: 一类是生命周期较短的瞬时对象,这类对象的创建和消亡都非常迅速 另外一类对象时生命周期非常长,在某些情况下还能与JVM的生命周期保持一致 2.Java堆区进一步细分可以分为年轻代(Y ...
分类:
其他好文 时间:
2020-07-17 13:59:31
阅读次数:
93
关于JVM,也许你听过这些术语:年轻代(新生代)、老年代、永久代、minor gc(young gc)、major gc、full gc 不要急,先上图,这是jvm 堆内存结构图 仔细的你发现了 图中有些分数8/10和1/10,这是默认配置下各个代内存分配比例。 举个栗子: 假如总heap max分 ...
分类:
其他好文 时间:
2020-07-09 12:00:19
阅读次数:
197
对老年代触发垃圾回收的时机,一般就是两个: 要不然是在Minor GC之前,一通检查发现很可能Minor GC之后要进入老年代的对象太多了,老年代放不下,此时需要提前触发Full GC然后再带着进行Minor GC; 要不然是在Minor GC之后,发现剩余对象太多放入老年代都放不下了。 那么对老年 ...
分类:
其他好文 时间:
2020-07-07 13:23:18
阅读次数:
52
参数基本策略 各分区的大小对GC的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。 活跃数据的大小是指,应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是Full GC后堆中老年代占用空间的大小。可以通过GC日志中Full GC之后老年代数据大小得出,比较准确的 ...
分类:
其他好文 时间:
2020-07-06 18:04:14
阅读次数:
55
针对新生代的GC复制算法和老年代的GC标记-整理算法,jvm针对新生代和老年代分别提供了不同的垃圾收集器 新生代: Serial,ParNew, ParallelScavenge 老年代:CMS,SerialOld(MSC),ParallelOld 从新生代介绍起: 1.Serial 垃圾收集器(单 ...
分类:
其他好文 时间:
2020-07-01 23:52:59
阅读次数:
79
看《深入理解Java虚拟机》中传统垃圾收集器(非G1)使用记忆集(Remembered Set)来处理跨代引用时根节点枚举的问题。里边说到 在新生代上建立一个全局的称为记忆集的数据结构,这个结构把老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生 Minor GC 时,只有包含了跨 ...
分类:
编程语言 时间:
2020-06-25 16:05:02
阅读次数:
90
G1之前收集器的特点 年轻代和老年代是各自独立且连续的内存块 年轻代收集器使用 eden + S0 + S1 进行复制算法 老年代收集必须扫描整个老年代区域 都是以尽可能的少而快速地执行 GC 为设计原则 G1 是什么 G1 是一种面向服务端的垃圾收集器,应用在多核处理器和大容量内存环境中,在实现高 ...
分类:
其他好文 时间:
2020-06-22 13:16:35
阅读次数:
60