1、垃圾回收对比
自动垃圾回收:
根据对象是否使用 由虚拟机来回收对象
优点:降低程序员实现难度,降低对象回收bug的可能性
缺点:程序员无法控制内存回收的及时性
手动垃圾回收:
由程序员编程实现对象的删除
优点:回收及时性高,由程序员把控回收的时机
缺点:编写不当容易出现悬空指针、重复释放、内存泄漏等问题
2、自动垃圾回收应用场景
解决系统僵死的问题
大厂的系统出现的许多系统僵死问题都与频繁的垃圾回收有关
性能优化
对垃圾回收器进行合理的设置可以有效地提升程序的执行性能
高频面试题
常见的垃圾回收器
常见的垃圾回收算法
四种引用
项目中用了哪一种垃圾回收器
其他:
线程不共享的部分(程序计数器、虚拟机栈、本地方法栈)无需使用垃圾回收器
因为都是伴随线程创建而创建,伴随线程销毁而销毁。
而方法的栈帧在执行完方法后就会自动弹出栈并释放掉对应内存
如果需要手动触发垃圾回收,可以调用System.gc()方法,
注意事项:
调用System.gc()方法并不一定会立即回收垃圾,仅仅是向Java虚拟机发送一个垃圾回收的请求,具体是否需要执行垃圾回收Java虚拟机会自行判断