1.目前java的垃圾回收器(Garbage Collectors)一共有10种
2.怎么找到垃圾?
Root Searching 根可达算法
什么是根?(main方法里的绝对有用)
3.常见的垃圾算法
4.GC的演化过程
JDK1.8使用分代管理的方法:
一个对象诞生进入伊甸园,当伊甸园满了之后,进行GC,那些回收了好几次都回收不掉的,进入老年代。
5.伊甸区和幸存者区
新诞生的对象全伊甸园这里仍,满了之后发生YGC。一次回收之后存货的对象被复制到幸存者1区,然后清空伊甸园区。下一次GC,扫描伊甸园和幸存者1区,把活着的复制到幸存者2区,清空伊甸园区和1区,依次循环。年龄够了进入到老年代。
6.survivor装不下去怎么办
可以进行JVM调优进行调整。
为什么要有幸存者区,YGC十分频繁,效率第一,复制算法最快。
7.在分代算法的基础上有哪些垃圾回收器
1)单线程GC
只有一个人帮你回收垃圾!!!
当空间快不够时,妈妈推门而入,告诉你们停止,不许动(STW),然后顺着线找垃圾,找完后,告诉你们‘继续吧‘!
STW: stop the world 业务线程不能工作,无响应。
线程数不是越多越好,因为有一个线程切换,需要消耗资源。
2)concurrent mark sweep--CMS(并发GC)
一边处理业务,一边回收垃圾。
一边扔垃圾,一边有人帮你捡垃圾。不用STW了。
8. CMS 存在的问题:
一个对象被认定为垃圾的不确定性,下一秒可能就是垃圾了,同理,反之。
怎么解决扫描的时候,对象的状态变化问题?
三色标记算法。