1. 手动垃圾回收 VS 自动垃圾回收
我们都知道在C,C++编程语言中,编程人员需要手动分配、释放内存。这么做有个很大的缺陷,编程人员很容易忘记去释放内存,从而导致无效的内存没有被清理出来。这就是内存泄漏。
2. JVM Heap(堆)
堆包涵三部分内存。
a. New Generation 新生代
新生代顾名思义就是用来存放新的对象,它包括 Egen和Survivor。刚new出来的对象在Egen中。Survivor看名字就知道用来存放活下来的对象。Minor GC后对象从Egen->Survivor
b. Old Generation 老生代
Old Generation又称为Tenured Generation,用来存放多次回收依然存活的对象。
c. Permanent Generation 持久代
在hotspot JVM系列中, 持久代这块内存用来实现方法区。
3. GC 定义
a. Minor GC
新生代中垃圾回收一次称为一次Minor GC
b. Major GC
老生代中垃圾回收一次称为一次Major GC
c. Full GC
Full GC = Minor GC + Major GC
4. Garbage Collection Algorithms(垃圾回收算法)