1 什么是垃圾

垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。

2 为什么要学习GC

1)对高级语言而言,一个基本的认知就是如果不进行垃圾回收,内存迟早都会被消耗完。

2)除了释放没用的对象,垃圾回收也可以清理内存里的记录碎片。碎片整理将所用的堆内存移到堆的一端,以便jvm整理出的内存分配给新的对象。

3)随着应用程序所付的业务越来越大、复杂,用户越来越多,没有GC就不能保证应用程序的正常进行。

3 早期的垃圾回收

在早期的C/C++时代,垃圾回收基本上是手工进行的。开发人员可以使用new关键字进行内存申请,并使用delect关键字进行内存释放。

这种方式可以灵活控制内存的释放时间,但是会给开发人员造成很大的管理负担,也可能因为区间忘记回收而造成内存泄漏。

4 java垃圾回收机制

自动内存管理,无需开发人员手动参与内存的分配与回收,这样降低内存泄漏和内存溢出的风险。

自动管理机制,将程序员从繁重的内存管理中释放出来,可以更专心于关注于业务开发。