中的引用只有引用和没有引用两种情况,但是在开发过程中,我们往往需要更加复杂的场景,例如当我们内存空间足够的时候,我们就讲对应的对象存储在内存中,当我们内存不足的时候我们就把它进行回收,所以JDK1.2之后...,然后当这些对象被使用过后,就会把这些复制出来的全部都清除,优点就是运行高效,不必考虑内存碎片问题,(内存碎片在多个对象相互引用的过程中没有全部清除,最终产生内存碎片)缺点是会将整个堆内存空间缩小到原来的一半...,G1对此是使用并发的方式来保证GC运行和用户线程的同时使用,这就是把对CPU资源的调用权还给了CPU自身
2.分代收集:G1可以选择自己独立管理堆内存,也可以选择跟其他的GC回收器一起进行管理
3.空间整合...:更有利于程序的长时间运行,分配大对象时不会因为无法找到连续的内存空间而提前触发了GC
4.可预测的停顿:可以设置垃圾收集的时间最大值不超过N毫秒
5.GI的执行过程
初始标记
并发标记
最终标记
筛选标记...对象分配原则
1.优先分配在新生代Eden区中,当Eden区当中空间不足时,触发Minor GC
2.大对象或者是长期存活调用频繁的对象会进入到年老代,当年老代空间不足时会触发Major GC,Major