垃圾
今日总结
什么是垃圾:只要对象不再被使用,那即是垃圾
如何判断为垃圾:可达性分析算法和引用计算算法,JVM使用的是可达性分析算法
什么是GC Roots:GC Roots是一组必须活跃的引用,跟GC Roots无关联的引用即是垃圾,可被回收
常见的垃圾回收算法:标记清除、标记复制、标记整理
为什么需要分代:大部分对象都死得早,只有少部分对象会存活很长时间。在堆内存上都会在物理或逻辑上进行分代,为了使「stop the word」持续的时间尽可能短以及提高并发式GC所能应付的内存分配速率。
Monor GC:当Eden区满了则触发,从GC Roots往下遍历,年轻代GC不关心老年代对象
什么是card table【卡表】:空间换时间(类似bitmap),能够避免扫描老年代的所有对应进而顺利进行Monor GC (案例:老年代对象持有年轻代对象引用)
堆内存占比:年轻代占堆内存1/3,老年代占堆内存2/3。Eden区占年轻代8/10,Survivor区占年轻代2/10(其中From 和To 各站1/10)
《对线面试官》系列目前已经连载29篇啦,这是一个讲人话面试系列
-
【对线面试官】Java注解 -
【对线面试官】Java泛型 -
【对线面试官】 Java NIO -
【对线面试官】Java反射 && 动态代理 -
【对线面试官】多线程基础 -
【对线面试官】 CAS -
【对线面试官】synchronized -
【对线面试官】AQS&&ReentrantLock -
【对线面试官】线程池 -
【对线面试官】ThreadLocal -
【对线面试官】CountDownLatch和CyclicBarrier -
【对线面试官】为什么需要Java内存模型? -
【对线面试官】深入浅出 Java 内存模型 -
【对线面试官】Java从编译到执行,发生了什么? -
【对线面试官】双亲委派机制 -
【对线面试官】JVM内存结构 -
【对线面试官】List -
【对线面试官】Map -
【对线面试官】SpringMVC -
【对线面试官】Spring基础 -
【对线面试官】SpringBean生命周期 -
【对线面试官】Redis基础 -
【对线面试官】Redis持久化 -
【对线面试官】Kafka基础 -
【对线面试官】使用Kafka会考虑什么问题? -
【对线面试官】MySQL索引 -
【对线面试官】MySQL 事务&&锁机制&&MVCC -
【对线面试官】MySQL调优
文章以纯面试的角度去讲解,所以有很多的细节是未铺垫的。
鉴于很多同学反馈没看懂【对线面试官】系列,基础相关的知识我确实写过文章讲解过啦,但有的同学就是不爱去翻。
我把这些上传到网盘,你们有需要直接下载就好了。
评论