Java填坑工程--JVM那些事儿之垃圾收集器
文章目录 一、垃圾收集器 1、对象是否存活? 2、垃圾收集算法 标记-清除(Mark-Sweep) 复制(Copying) 标记-整理 3、垃圾收集器 Serial收集器 ParNew收集器 Parallel Scavenge收集器 Serial Old收集器 Parallel Old收集器 CMS收集器 G1收集器 二、 内存分配与回收策略 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。 -----《深入理解Java虚拟机》 在 Java填坑工程–JVM那些事儿之Java内存区域 中阐述了Java运行时数据区域,Java语言本身也是支持内存动态分配的,那我们为什么还要了解GC和内存分配呢?(你品,你细品!)----因为当需要排查各种内存溢出、内存泄露问题时,当垃圾收集成为系统高并发量的瓶颈时,当找不到Bug百思不得其解的时候,我们需要进行必要的调控和调节,这就是理由。 一、垃圾收集器 垃圾收集器关注的是JVM中堆和方法区。 1、对象是否存活? 在大多数JVM中,使用 可达性分析 来判定对象是否存活。 可达性分析:通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时