GC回收器

垃圾回收机制,作用是:在Java中,Java内存(堆内存)的分配与回收由JVM垃圾收集器自动完成
:存放局部变量
:存放所有new出来的对象
方法区:被虚拟机加载的类信息,常量,静态变量等
堆内存就是GC管理的主要区域
JVM又将堆内存分为三种:新生代,老年代,持久代

**新生代**
	
	分为Eden,From Survivor,To Survivor:
	大多数新创建的对象都会分配到Eden区,其中大多数对象会很快消亡,Eden区是连续的内存空间,所以分配内存极快
	当Eden区d第一次满的时候执行Minor GC,将消亡的对象处理掉,并将剩余的对象复制到一个存活区From
	当Eden区再次存满的时候,将消亡的对象清理,将剩余的对象复制到To区中,然后To区和From区进行交换角色,直到To区背存满,就会把这些对象存入老年代中
	如果没有存满,在两个存活区切换了几次后,还存活的对象也会存入老年代中

老年代:

	在新生代中经过多次垃圾回收依然存活的对象就会发送到老年代中,整堆包括新生代和老年代的垃圾回收,称为Full GC

持久代:

	在JDK8之前的HotSpot实现中,类的元数据如方法数据、方法信息(字节码,栈和变量大小)、运行时常量池、已确定的符号引用和虚方法表等被保存在永久代中,
	32位默认永久代的大小为64M,64位默认为85M,可以通过参数-XX:MaxPermSize进行设置。GC不会在主程序运行期对永久区域进行清理,这也导致了永久代的区域
	会随着加载的Class的增多而胀满,最终抛出OOM异常。

总结:
1 新的对象实例会优先分配在新生代,在经历Minor GC(默认15次)后,会将依然存活的对象存入老年代中
2 Major GC发生在老年代中,当升到老年代的对象大于老年代剩余空间时会发生Major GC,发生Major GC的时候,用户线程会暂停,会降低系统性能和吞吐量
3 Java中不能手动触发GC回收器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值