垃圾回收01-基础

1、垃圾回收对比

自动垃圾回收:

根据对象是否使用 由虚拟机来回收对象
优点:降低程序员实现难度,降低对象回收bug的可能性
缺点:程序员无法控制内存回收的及时性

手动垃圾回收:

由程序员编程实现对象的删除
优点:回收及时性高,由程序员把控回收的时机
缺点:编写不当容易出现悬空指针、重复释放、内存泄漏等问题


2、自动垃圾回收应用场景

解决系统僵死的问题

大厂的系统出现的许多系统僵死问题都与频繁的垃圾回收有关

性能优化

对垃圾回收器进行合理的设置可以有效地提升程序的执行性能

高频面试题

常见的垃圾回收器
常见的垃圾回收算法
四种引用
项目中用了哪一种垃圾回收器


其他:

线程不共享的部分(程序计数器、虚拟机栈、本地方法栈)无需使用垃圾回收器
因为都是伴随线程创建而创建,伴随线程销毁而销毁。
而方法的栈帧在执行完方法后就会自动弹出栈并释放掉对应内存

如果需要手动触发垃圾回收,可以调用System.gc()方法,
注意事项:
调用System.gc()方法并
不一定会立即
回收垃圾,仅仅是向Java虚拟机发送一个垃圾回收的请求,具体是否需要执行垃圾回收Java虚拟机会自行判断