JAVA垃圾回收

1.垃圾回收的目的是释放那些不再被任何活动对象引用的JAVA对象所占用的内存,在一个垃圾收集周期里,所有仍然被引用的对象都将被保留,而那些不再被引用的对象将被释放,其所占用的空间被回收来分配给新的对象

2.当内存分配线程找不到一块足够大的连续空间为新对象分配内存时,JVM将进行垃圾回收。

3.在程序中调用System.gc()并不能确保垃圾回收一定被执行,在任何一次垃圾回收前,都会先判断执行垃圾收集是否安全(非安全点包括正在为对象分配内存,优化CPU指令)

4.引用计数收集器记录了指向每个java对象的引用数,一旦指向某个对象的引用数为0,那么可以立即回收该对象。该方法的难点在于保障引用计数的准确性,以及如何处理循环引用对象(需java堆上的全局分析,增加算法复杂度)。

5.跟踪收集基于这样一个假设:所有活动对象都可以通过一个已知的初始活动对象集合的迭代引用找到。确定了初始对象之后,就可顺着这些对象的引用关系依次将引用所指向的对象标注为活动对象,知道所有被引用的对象都被标注,而没被标注的对象的内存就被回收。

6.分代垃圾收集将堆分为不同的空间(新生代和老年代),每个空间中保存不同年龄(对象存活的垃圾收集周期数)的对象,当新生代没有空间可分配时,新生代的活动对象就会被移动到老年代。老年代运行垃圾收集的频率较低,新生代运行垃圾收集的频率较高。

  

转载于:https://www.cnblogs.com/tedbear/p/5317683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值