java 垃圾回收机制(GC)学习笔记

本文介绍了Java中的两种垃圾回收(GC)方法:System.gc()和finalize()。详细解释了GC触发条件,包括Eden区满时的Minor GC及老年代空间不足时的Full GC。此外还提供了减少GC开销的有效策略。
摘要由CSDN通过智能技术生成

GC两种方法:

   
1.Systme.gc()  ,
gc线程会立即启动,显示调用gc(),会增加主gc频率,进而影响性能。


2.finalize()

protected void finalize()

当一个对象变成一个垃圾对象的时候,如果此对象的内存被回收,那么就可以调用系统中定义的finalize方法来完成


GC何时运行:


1.eden(堆内存分一个eden与两个survivor)没有足够内存时,虚拟机将发生一次Minor GC,eden仍存活的对象将拷贝到survivor区(复制算法)。


2.老年代没有足够内存,进行full gc ,发生Full GC一般都会有一次Minor GC


3 .发生Minor GC时,虚拟机会检测之前每次晋升到老年代的平均大小是否大于老年代的剩余空间大小,如果大于,则进行一次Full GC,如果小于,则查看HandlePromotionFailure设置是否允许担保失败,如果允许,那只会进行一次Minor GC,如果不允许,则改为进行一次Full GC


减少GC开销:


1 减少临时对象的使用

2 不显式调用System.gc(),会增加主gc频率,影响性能

3 对象不用是为null 便于发现

4 尽量使用基本数据类型int  避免包装类数据类型 Interger

5 增加字符串使用stringBuffer .append() 而不是string=" a"+"b"

....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值