百度一面:
电话面试,问的东西比较广,时长34分59秒
1、自我介绍
2、介绍一下项目
3、知识点的连环攻击,问到你不会为止
- GC回收算法
主要有计数器算法和可达性算法
计数器算法:即对象被引用 为其加一 ,未被引用,为其减一 ,如果计数器数字为0,即可将对象GC回收
可达性算法(root):可达性算法是根据有向图的方式进行对象间关系的连接的,如果一个对象并没有被root进行有向图走向连接到的话,这个就可以进行GC回收
如果相对一个对象进行回收,也可以手动调用System.gc()的方法
标记清除、标记整理、复制、分代
标记清除:就是将要被回收的对象标记出来,然后进行清除,但是这样会造成很多的,内存碎片
标记整理:就是同样将要被回收的对象标记出来,但是进行清除时,会将
后面的对象进行移动,减少了内存碎片的产生,但是会造成资源的浪费
复制:将内存区域分为了左右两个区域,将不需要回收的对象复制到另一边,但是这种情况会让我们实际能够进行应用的内存区域缩短了一半
分代:主要是将内存区域分为新生代和老年代,新生代包括eden和from suvior和to suvior区 比例时8:1:1,主要使用的是复制算法
老年代中存放的是在每一次换区都会为他们进行+1,好像+到6就可以被存放到老年代,然后老年代使用的就是标记整理算法了,可能也是在老年代的元素不会轻易的就被删除,所以使用标记整理不会那么的浪费资源,也不会产生内存碎片