JVM垃圾回收机制的原理

1.垃圾回收的意义:JVM 的垃圾回收机制这里称GC。java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,不定时进行回收,不至于电脑运行卡死。

     2.了解一下JVM内存运行时数据区

堆:放new出来的对象,是全局共享的。

栈:存储基本数据类型,以及对象的引用,私有线程,入口方法main。

方法区:在class被加载后的一些信息 如常量,静态常量这些被放在这里,将它称之为永久代。

程序计数器:切换线程,用来计时。

线程:他可以有多个线程。

JVM垃圾回收机制的原理

3.GC如何发现垃圾

3.1引用计数法:漏掉循环引用的对象          3.2.根搜索算法

4.GC如何清除垃圾

4.1.标记清除算法:内存碎片多

JVM垃圾回收机制的原理

4.2    分段复制算法

JVM垃圾回收机制的原理

4.2.1 分代收集算法1:分新生代,老年代,永久代

JVM垃圾回收机制的原理

4.2.2 分代收集算法2

JVM垃圾回收机制的原理

5.内存泄漏:本该被回收的内存被遗漏了,一直占用。(静态东西不会回收,系统一直卡,一直卡)

JVM垃圾回收机制的原理

JVM垃圾回收机制的原理

6.内存溢出 :分配给进程内存满了
        6.1.堆内存溢出:OutOfMemoryError: Java heap space

        6.2.方法区(永久代)溢出:OutOfMemoryError: Metaspace
        6.3.栈内存溢出:*Error