垃圾收集器与内存分配策略 对象存活判断 引用计数算法 给对象添加一个计数器,每有一个引用+1,当引用失效-1,若为0则不在被使用. 可达性分析算法 对象是否可到达GC roots 或者说GC roots 是否是对象的上层节点(祖父节点,父节点) GC roots 虚拟机栈(栈中的本地变量表)中引用的 ...
分类:
其他好文 时间:
2020-06-26 14:23:08
阅读次数:
97
看《深入理解Java虚拟机》中传统垃圾收集器(非G1)使用记忆集(Remembered Set)来处理跨代引用时根节点枚举的问题。里边说到 在新生代上建立一个全局的称为记忆集的数据结构,这个结构把老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生 Minor GC 时,只有包含了跨 ...
分类:
编程语言 时间:
2020-06-25 16:05:02
阅读次数:
90
ZGC是一款在JDK11中新加入的具有实验性质的低延迟垃圾收集器,目前仅支持Linux/x86-64。ZGC收集器是一款基于Region内存布局的,(暂时)不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。 ZGC布局 与She ...
分类:
其他好文 时间:
2020-06-24 16:36:41
阅读次数:
75
支持启动时选择 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、程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机概念模型里(它仅是概念模型,各种虚拟机可能会通过一些高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线 ...
分类:
编程语言 时间:
2020-06-21 00:07:24
阅读次数:
65
前言 ZGC是一款在JDK11中新加入的具有实验性质的低延迟垃圾收集器,目前仅支持Linux/x86-64。ZGC收集器是一款基于Region内存布局的,(暂时)不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。 ZGC布局 与 ...
分类:
其他好文 时间:
2020-06-20 21:50:39
阅读次数:
92
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
例如,要数一数菜单中每类菜有多少个,可以传递counting收集器作为groupingBy收集器的第二个参数:Map<Dish.Type, Long> typesCount = menu.stream().collect( groupingBy(Dish::getType, counting())) ...
分类:
其他好文 时间:
2020-06-18 21:22:09
阅读次数:
67