一、 什么是垃圾
1.1 概念
垃圾是指:在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。
- 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。
二、 为什么需要GC
- 如果不进行垃圾回收,内存迟早会被消耗完,因为不断的分配内存空间而不进行回收,就好像不停的生产生活垃圾而从来不打扫一样。
- 除了释放没用的对象,垃圾回收也可以清除内存里的记录碎片。碎片整理将所占用的堆内存移到堆的一端,以便JVM将整理出的内存分配给新的对象。
- 随着应用程序所应付的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序的正常进行。而经常造成STW的GC又跟不上实际的需求,所以才会不断的尝试对GC进行优化。
三、 早期垃圾回收
早期的垃圾回收是手工进行的
有了垃圾回收机制后,将进行自动垃圾回收
四、 java垃圾回收机制
- 回收机制: