java自习室 day 3

GC

聊聊java中的GC操作
作者:wind blog
GC主要思路分为三步:
1、Marking(标记);
2、Normal Deletion(清除标记的对象);
3、Deletion with Compacting(压缩清除)。

GC root

GC标记主要采用GC root的算法,选定一些对象作为GC roots,以这些对象为起点,搜索所走过的引用链,不可达的对象标记为待清除的对象。可以作为GC root的对象:JVM栈中所引用的对象、方法区中,静态属性引用的对象、方法区中,常量引用的对象、本地方法栈中,JNI(即Native方法)引用的对象。

分代与GC机制

java堆内存被分为三种:新生代:Eden,From Survivor,To Survivor,比例8:1:1、老年代、永久代。
在这里插入图片描述

新生代

新产生的对象全都放在Eden区,当Eden区满时,将触发一次minor garbage collections。这是一个stop the world事件。触发minor GC后,还被引用的对象会被放入From Survivor区,没有被引用的对象被清除。再触发一次GC后,From Survivor和Eden区的被引用的对象会全部被放入To Survivor区中。无限循环以上步骤,新生代中存货年龄大于门限的会被放入老年代中。

GC复制算法(标记-复制算法)

新生代管理内存的算法。将内存分为两个空间,一个From,一个To。From分配,To空闲。GC时把存活的对象复制粘贴进To,然后将To变成新的From,原来的From变成To。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

老年代

老年代的GC是major garbage collections,也叫full GC,当老年代内存不够时就会触发,包括对新生代和老年代所有对象的回收。采用标记-压缩清除算法。

GC收集器

Serial

采用标记-复制算法,单线程,GC时程序会进入长时间的暂停状态,不建议使用。

Parallel

也使用标记-复制算法,并行使用多线程去GC,吞吐量优先。

CMS(ConcurrentMarkSweep)

标记-清除算法。在minor gc时会暂停程序,采用多线程进行gc。full gc不暂停应用线程,采用多个后台线程对老年代空间进行扫描,及时回收不再使用的对象。

G1(GarbageFirst)

为了降低full gc次数,同时采用标记-压缩算法降低内存碎片。

SQL JOIN

图解JOIN
作者:CodingStar

操作系统交互

Java与操作系统交互细节
作者:董鹏dp
还未看完,明天总结在day 4中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值