GC和GC调优
[TOC] GC和GC Tuning GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题: 忘记回收 多次回收 没有任何引用指向的一个对象或者多个对象(循环引用) 2.如何定位垃圾 引用计数(ReferenceCount) 根可达算法(RootSearching) 3.常见的垃圾回收算法 标记清除(mark sweep) - 位置不连续 产生碎片 效率偏低(两遍扫描) 拷贝算法 (copying) - 没有碎片,浪费空间 标记压缩(mark compact) - 没有碎片,效率偏低(两遍扫描,指针需要调整) 4.JVM内存分代模型(用于分代垃圾回收算法) 部分垃圾回收器使用的模型 除Epsilon ZGC Shenandoah之外的GC都是使用逻辑分代模型 G1是逻辑分代,物理不分代 除此之外不仅逻辑分代,而且物理分代 新生代 + 老年代 + 永久代(1.7)Perm Generation/ 元数据区(1.8...














