JVM知识框架
2021-10-02 12:29:53 15 举报
AI智能生成
登录查看完整内容
针对JVM常见知识总结、及面试问题总结!
作者其他创作
大纲/内容
Eden区满了,则触发Minor GC
Survivor区满了不会触发Minor GC
引发STW,暂停其他用户线程,等待垃圾回收结束,用户线程才恢复运行
minor GC
永久代(元空间)满,则触发major GC
major GC
老年代空间不足
方法区空间不足
调用System.gc()
Minor GC后进入老年代的平均大小>老年代的可用空间
Eden区向Survivor区复制存活对象时,Survivor区存放不下,则把该对象放入老年代,则老年代可用空间<该对象大小
Full GC
GC种类
存在相互引用问题,JVM没有选用了!
引用技术法
可达性分析
虚拟机栈中引用的对象
如:类中的静态变量
类静态属性引用的对象
如:字符串常量池(String Table)的引用
常量引用的对象
被同步锁持有的对象
在本地方法栈中Native方法引用的对象
GC Roots可以是哪些
判断对象存活方式
Eden区,form区和to区
优点:可保证内存的连续性,不会出现碎片问题
缺点:浪费空间,需要两倍空间
总结
在新生代,一次通常可回收70~90%的空间,回收性价比高
因此一般商业虚拟机都是采用的复制算法回收新生代
Tips
标记复制
标记——>清除
需等完全标记完才开始进行回收的,效率不是很高
在进行GC时,需停止整个应用程序,用户体验较差
内存不连续,产生内存碎片,需维护空闲列表
标记清除
从根节点开始标记所有被引用的对象
标记
将所有的存活对象压缩到内存一端,按排序排放,之后清理界外所有的空间
压缩
相对标记清除算法,内存消耗占用减少
相对复制算法,消除了内存减半的代价
优点
效率低下
移动对象时,若对象被其他对象应引用,需调整引用的地址
缺点
标记整理
从效率来说,复制算法最快,但浪费了很多内存
垃圾收集算法
垃圾收集器与内存分配策略
显示触发Full GC,同时对老年代和新生代进行回收
并不是立即调用生效的
System.gc()的理解
代码中创建了大量的大对象,且长时间不能被垃圾收集器收集
java虚拟机的堆内存设置不够
内存溢出
对象是可达的,但对象不会再被程序使用到了,所以导致GC无法回收的情况
定义
单例的生命周期和应用程序一样长,若单例对象持有引用,则这个持久的对象是不会被垃圾回收器回收的,则导致内存泄漏产生
数据库连接,网络连接和IO连接,必须手动close(),否则不能回收!
案例
内存泄漏
可以直接访问的对象
强引用所指向的对象在任何时候都不会被垃圾回收期回收
JVM宁愿抛出OOM异常,也不会回收强引用所指向的对象
强引用
在进行垃圾回收时,只要是弱引用,不管系堆空间是否使用,都会被回收掉
弱引用
当内存不足时,再回收软引用的可达对象
内存足够时,不会回收软引用的可达对象
软引用
主要用来追踪对象的回收情况
虚引用
引用
运行用户代码的时间占总运行时间的比例
吞吐量
执行垃圾收集时,程序的工作线程被暂停的时间
暂停时间
java堆区所占用的内存大小
内存占用
评估垃圾回收器的性能指标
几乎不用,无法解决循环引用问题
引用计数
新生代
复制拷贝
老年代
主要的GC算法
-XX:+UseSeriallGC
Serial(串行回收)
-XX:+UseParallelGC
Parallel(并行回收)
并发标记清除
CMS
将堆内存分割成不同区域、然后并发的进行垃圾回收
G1
JAVA 11出现的
ZGC
主要的垃圾收集器
串行垃圾收集器
UserSerialGC
串行老年代垃圾收集器(已经被移除)
UserSerialOldGC
串行回收器(UserSerialGC)
年轻代的并行垃圾回收器
UseParNewGC
老年代的并行垃圾回收器
UseParallelOldGC
并行垃圾收集器
UserParallelGC
并行回收器(UserParallelGC)
(CMS)并发标记清除
UseConcMarkSweepGC
G1垃圾收集器
UseG1GC
并发回收器(UseConcMarkSweepGC)
按线程数划分
UserSerialGC,串行垃圾回收器
Serial Copying
UserParallelGC,并行垃圾收集器
Parallel Scavenge
UserParNewGC,新生代并行垃圾收集器
ParNew
新生代(Young Gen)
UseSerialOldGC,老年代串行垃圾收集器
Serial Old
UseParallelOldGC,老年代并行垃圾收集器
Parallel Compacting(Parallel Old)
UseConcMarkSwepp,并行标记清除垃圾收集器
老年代(Old Gen)
UseG1GC,G1垃圾收集器
各区都能使用
垃圾收集器与分代关系
七种垃圾收集器
垃圾回收器总结
垃圾收集器如何选择
垃圾回收器
垃圾回收相关概念
JVM知识框架
0 条评论
回复 删除
下一页