JVM虚拟机
JVM虚拟机
如何发现垃圾:
虚拟机,GC发现垃圾的算法:
1.引用计数法
2.根搜索算法
Java虚拟机,GC 回收垃圾(清理垃圾)算法:
1.标记清除算法
优点: 清除效率高,性能高 简单,
缺点: 内存碎片太多,使内存使用效率不高
2.分段复制算法 (将内存空间,分成两半,) 用一半,留一半
优点:避免内存碎片,效率高,
缺点:动静太大,(容易造成卡顿)
3*.标记-整理算法(整理成,连续的(标记清除法的改良版)*
上两个算法的加强版
4.分代收集算法
伊甸园(新生对象), 生存区(From, To 区), 老年代, 永久代(方法区)
打扫卫生级别:
第一级:Minor GC (小范围,)垃圾回收和整理, 新生代,(调用频繁)
第二级:Major GC (大范围) 垃圾回收和整理, 新生代和老年代 ,内存占用超过百分之6/70 的时候,调用
第三级:Full GC (完整范围) 垃圾回收和整理,所有的区域,(新生代,老年代,永久代)
内存泄漏示例;
遗留问题:
内存泄漏:该回收的内存/对象,无法回收,导致内存一直占用
内存溢出:内存不够了,导致,程序崩溃,
Java代码写的垃圾,导致,产生很多的垃圾,无法回收,(内存泄漏),达到一定程度,就会导致内存溢出
内存溢出的三种方式:
内存模型中几个重要区域的作用:
总结: