54.垃圾回收概述

 

GC很重要,大厂面试都会问。下面是面试的一些题目。
在这里插入图片描述
在这里插入图片描述

1.什么是垃圾?为什么需要GC?

1.没有任何指针指向的对象就是垃圾。
2.垃圾需要及时被清理,如果一直不对其进行清理,这些垃圾对象所占用的空间和会一直保留到应用程序结束,被保留的空间无法被其他对象使用,甚至导致内存溢出。
在这里插入图片描述
3.为什么需要进行垃圾回收?
a) 如果不进行垃圾回收,内存迟早要被消耗完。
b) 垃圾回收除了释放没有用的对象,还可以清除内存里的记录碎片,碎片整理将堆内存已到堆的一端,以便JVM将整理出的内存分配给新的对象
c)随着应用程序越来越复杂,用户越来越多,没有GC就不能保证应用程序的正常进行。
在这里插入图片描述

2.了解早期的垃圾回收机制

1.早期c/C++的垃圾回收是开发人员自己进行控制的。使用new关键字申请内存,使用delete关键字进行内存释放。
2.这种方式给开发人员带来了申请释放内存的负担。
3.有时候开发人员会忘记使用delete释放内存,导致内存泄漏
在这里插入图片描述
4.现在,除了Java以外,许多语言都使用了自动垃圾回收机制,是未来的发展趋势。
在这里插入图片描述

3.Java内存回收机制

1.好处:Java自动管理内存,可以降低内存泄漏和内存溢出的风险。程序员可以更加专注于业务开发。
在这里插入图片描述
2.弊端:会弱化开发人员在程序出现内存溢出时定位问题和解决问题的能力。
在这里插入图片描述
3.垃圾回收可以对年轻代、老年代甚至是全堆和方法区进行回收。
堆区是垃圾回收的重点。
从次数上讲,频繁搜集Young区;较少收集Old区;基本不动Perm区(或元空间)
在这里插入图片描述

 

posted @ 2020-11-18 22:27  跃小云  阅读(121)  评论(0编辑  收藏  举报