垃圾回收机制GC面试题

GC垃圾回收机制

回收机制就是当一些资源被创建使用之后或不在调用的话 就会变成垃圾,垃圾的话会占用空间,这时候就需要释放空间给其他程序使用,所以JAVA拥有自动垃圾回收机制。

GC的工作原理: 引用计数,标记复制"引用计数"是一种简单但速度很慢的垃圾回收技术。

"标记复制"的运行机制,垃圾回收器遍历包含所有引用的列表,当发现存活的对象引用时做上标记,这样当遍历完所有对象引用并做上标记的时候,执行垃圾回收,将没有标记的对象堆空间释放.

垃圾回收机制的优点:Java的垃圾回收机制使得java程序员不用担心内存空间的分配,减少了内存溢出.但同时也牺牲了一定的性能.

垃圾回收机制是在虚拟机空闲的时候或者内存紧张的时候触发。

会回收已经释放掉在内存中没用的对象,比如某个对象没有被任何活跃的线程访问,也没有被任何对象所引用。对于没用的对象垃圾回收器是通过标记计数法和根搜索法来判断的。

标记计数法是在内存中给对象打上标记,对象被引用一次,计数就+1,引用释放掉就-1,当这个计数为0的时候表示这个对象可以被回收了。标记计数法无法识别循环引用的对象,可以用根搜索法,从一个根对象出发,搜索所有可到达的对象,剩下的对象就是需要被回收了。

垃圾回收器机制中的根搜索法什么对象可以作为根对象?

1 静态变量引用的对象

2 本地方法也就是Native方法引用的对象

3 常量变量引用的对象

GC线程会造成卡顿吗,为什么,如何解决?

触发GC操作的时候,任何其他的线程的任何操作都会被暂停,等待GC操作完成之后,其他操作才能够运行。并且回收内存较大的对象,GC操作时间就越长,因此如果程序频繁触发GC操作,页面就会卡顿。

1 避免创建大量的临时对象和无用对象。

2 对于一些图片,要进行适当的压缩。

3 尽量不要创建过大的对象比如枚举类型。

GC三种收集方法?

标记清除,标记整理,复制算法

标记清除分为标记和清除两个部分,首先标记需要回收的对象,标记完成后统一清除对象,缺点:标记清除过程效率不高,标记清除后会产生大量不连续的内存碎片。

标记整理是在标记清除的基础上还需要对对象进行移动,比较耗时,但是不会产生内存碎片。

复制算法,将内存容量分为大小相等的两块,每次只使用其中一块,当一块内存用完后,就将还存活的对象复制到另一块内存中,然后将已使用过的内存回收掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值