垃圾回收器有哪些?是一个高频的面试题,那本文就详细来解答这个问题。因为不同的厂商(IBM、Oracle),实现的垃圾回收器各不相同,而本文要讨论的是Oracle的HotSpot虚拟机所使用的垃圾回收器。常用垃圾回收器,如下图所示:新生代回收器:Serial、ParNew、ParallelScavenge老年代回收器:SerialOld、ParallelOld、CMS整堆回收器:G1其中相互连线的垃
分类:
其他好文 时间:
2020-08-02 10:17:00
阅读次数:
76
简介 String对象有个特殊的StringTable字符串常量池,为了减少Heap中生成的字符串的数量,推荐尽量直接使用String Table中的字符串常量池中的元素。 那么String.intern的性能怎么样呢?我们一起来看一下。 String.intern和G1字符串去重的区别 之前我们提 ...
分类:
其他好文 时间:
2020-07-28 10:15:18
阅读次数:
77
G1回收器:区域化分代式 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First (G1)GC? 原因就在于应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序正常进行,而经常造成STW的GC又跟不上实际的需求,所以才会不断地尝试对GC进行优化。G1 ...
分类:
其他好文 时间:
2020-07-23 18:52:31
阅读次数:
77
继2014年3月Java8发布之后,时隔4年,2018年9月,Java11如期发布,其间间隔了Java9和Java10两个非LTS(LongTermSupport)版本。作为最新的LTS版本,相比Java8,Java11包含了模块系统、改用G1作为默认GC算法、反应式流Flow、新版HttpClient等诸多特性。作为JDK11升级系列的第一篇,本文将介绍此次升级最重要的特性——模块系统。1、模块
分类:
编程语言 时间:
2020-07-12 20:26:22
阅读次数:
63
看《深入理解Java虚拟机》中传统垃圾收集器(非G1)使用记忆集(Remembered Set)来处理跨代引用时根节点枚举的问题。里边说到 在新生代上建立一个全局的称为记忆集的数据结构,这个结构把老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生 Minor GC 时,只有包含了跨 ...
分类:
编程语言 时间:
2020-06-25 16:05:02
阅读次数:
90
支持启动时选择 JVM 进程列表;
支持观测详细的收集器GC暂停时间;
图表支持鼠标移动详细信息显示(时间和值);
支持 Hotspot JDK 8+版本下运行, 可检测 Hotspot JDK 1.5 ~ 14, 在 CMS, G1等收集器下检测通过; ...
分类:
其他好文 时间:
2020-06-22 17:23:51
阅读次数:
62
G1之前收集器的特点 年轻代和老年代是各自独立且连续的内存块 年轻代收集器使用 eden + S0 + S1 进行复制算法 老年代收集必须扫描整个老年代区域 都是以尽可能的少而快速地执行 GC 为设计原则 G1 是什么 G1 是一种面向服务端的垃圾收集器,应用在多核处理器和大容量内存环境中,在实现高 ...
分类:
其他好文 时间:
2020-06-22 13:16:35
阅读次数:
60
1 CMS收集器 CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。这是因为CMS收集器工作时,GC工作线程与用户线程可以并发执行,以此来达到降低收集停顿时间的目的。 CMS收集器仅作用于老年代的收集,是基于标记-清除算法的,它的运作过程分为4个步 ...
分类:
其他好文 时间:
2020-06-20 11:10:51
阅读次数:
47
一、JVM的垃圾回收器大致分为七种类 新生代收集器:Serial、ParNew、Parallel Scavenge。 老年代收集器:Serial Old、CMS、Parallel Old。 堆内存垃圾收集器:G1。(新生代老年代都能用) 附录: 串行:垃圾回收器(Serial Garbage Col ...
分类:
其他好文 时间:
2020-06-18 21:45:28
阅读次数:
76
前言 Shenandoah作为第一款不由Oracle(包括一起的Sun)公司的虚拟机团队所领导开发的HotSpot垃圾收集器。是只存在于OpenJDK当中的,最初由RedHat公司创建的,在2014年的时候贡献给了OpenJDK。 与G1相比的优点 从代码的历史渊源上来看,Shenandoah收集器 ...
分类:
其他好文 时间:
2020-06-17 23:37:51
阅读次数:
75