java有两个特性。一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不 ...
分类:
编程语言 时间:
2020-06-30 00:43:26
阅读次数:
65
垃圾回收(GC):是JVM中创建对象的内存分配以及销毁对象的内存回收的机制。 对象是否可回收: 1、对象引用计数法:根据对象的引用数量判断对象是否可回收 2、对象不可达分析法:根据对象是否可达判断对象是否可回收; 垃圾收集机制: 1、标记 - 清除: 根据对象是否可达判断对象是否可回收;然后进行标记 ...
分类:
编程语言 时间:
2020-06-29 09:29:10
阅读次数:
74
CLR GC是一种引用跟踪算法,大致步骤如下: 1、暂停进程中所有的线程; 2、标记阶段,遍历堆中的所有对象,标记为删除,然后检查所有活动根,如果有引用对象,就标记那个对象可达,否则不可达; 3、GC压缩阶段,对堆中可达对象压缩,使占用连续的内存; GC是基于代的垃圾回收算法,对象越新,生存期越短, ...
分类:
其他好文 时间:
2020-06-27 14:45:03
阅读次数:
62
垃圾收集器与内存分配策略 对象存活判断 引用计数算法 给对象添加一个计数器,每有一个引用+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
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
一、JVM的垃圾回收器大致分为七种类 新生代收集器:Serial、ParNew、Parallel Scavenge。 老年代收集器:Serial Old、CMS、Parallel Old。 堆内存垃圾收集器:G1。(新生代老年代都能用) 附录: 串行:垃圾回收器(Serial Garbage Col ...
分类:
其他好文 时间:
2020-06-18 21:45:28
阅读次数:
76