JVM虚拟机

JVM虚拟机

如何发现垃圾:
JVM虚拟机

虚拟机,GC发现垃圾的算法:

1.引用计数法

2.根搜索算法
JVM虚拟机
Java虚拟机,GC 回收垃圾(清理垃圾)算法:
1.标记清除算法
优点: 清除效率高,性能高 简单,
缺点: 内存碎片太多,使内存使用效率不高

JVM虚拟机
2.分段复制算法 (将内存空间,分成两半,) 用一半,留一半
优点:避免内存碎片,效率高,

缺点:动静太大,(容易造成卡顿)
JVM虚拟机

3*.标记-整理算法(整理成,连续的(标记清除法的改良版)*
上两个算法的加强版

JVM虚拟机
4.分代收集算法
伊甸园(新生对象), 生存区(From, To 区), 老年代, 永久代(方法区)

JVM虚拟机
打扫卫生级别:
第一级:Minor GC (小范围,)垃圾回收和整理, 新生代,(调用频繁)
第二级:Major GC (大范围) 垃圾回收和整理, 新生代和老年代 ,内存占用超过百分之6/70 的时候,调用
第三级:Full GC (完整范围) 垃圾回收和整理,所有的区域,(新生代,老年代,永久代)

内存泄漏示例;
JVM虚拟机
遗留问题:
内存泄漏:该回收的内存/对象,无法回收,导致内存一直占用
内存溢出:内存不够了,导致,程序崩溃,
Java代码写的垃圾,导致,产生很多的垃圾,无法回收,(内存泄漏),达到一定程度,就会导致内存溢出
内存溢出的三种方式:
JVM虚拟机

内存模型中几个重要区域的作用:
JVM虚拟机

总结:
JVM虚拟机