JavaEE之JVM简述

目录

1.JVM简介

2.Java的类加载

​编辑  2.1类加载的基本流程

​编辑 2.2类加载过程中的双亲委派模型 ​编辑

 3.JVM之垃圾回收

前言:

 3.2垃圾回收的定义

3.3 java的垃圾回收要回收的内存是哪些

3.4 回收堆上的内存,主要是回收什么 ?

3.5 垃圾回收到底是咋回收的?

​编辑3.6如何来判断或者找垃圾

3.6.1引用计数

3.6.2 可达性分析

3.7在知道哪些对象是垃圾的基础上,怎么回收?

3.7.1垃圾回收之经典算法

a)标记-清除

b)复制算法

c)标记整理


1.JVM简介

JavaEE之JVM简述_第1张图片

JavaEE之JVM简述_第2张图片

JavaEE之JVM简述_第3张图片   

2.Java的类加载

JavaEE之JVM简述_第4张图片  2.1类加载的基本流程

   JavaEE之JVM简述_第5张图片

看个例子:

JavaEE之JVM简述_第6张图片 2.2类加载过程中的双亲委派模型 JavaEE之JVM简述_第7张图片

 3.JVM之垃圾回收

前言:

JavaEE之JVM简述_第8张图片

 3.2垃圾回收的定义

JavaEE之JVM简述_第9张图片

3.3 java的垃圾回收要回收的内存是哪些

 JavaEE之JVM简述_第10张图片

3.4 回收堆上的内存,主要是回收什么 ?

JavaEE之JVM简述_第11张图片

3.5 垃圾回收到底是咋回收的?

JavaEE之JVM简述_第12张图片3.6如何来判断或者找垃圾

我们使用GC垃圾回收机制的话,有2种典型的方案

3.6.1引用计数

JavaEE之JVM简述_第13张图片

引用计数找垃圾的优缺点:

JavaEE之JVM简述_第14张图片

3.6.2 可达性分析

从一组初始的位置出发,向下进行深度遍历,把所有能够访问到的对象都标记成可达即可以被访问到,那不可达的对象就是垃圾。

JavaEE之JVM简述_第15张图片 

总结:在Java中不管是引用计数还是可达性分析,判定原则其实都是看当前这个对象是否有引用来指向。是在通过引用来决定对象的生死。

3.7在知道哪些对象是垃圾的基础上,怎么回收?

3.7.1垃圾回收之经典算法

a)标记-清除

JavaEE之JVM简述_第16张图片

b)复制算法

JavaEE之JVM简述_第17张图片 

c)标记整理

因此为了解决上面复制算法的内存空间利用率低的问题,我们使用标记整理

JavaEE之JVM简述_第18张图片 

但是实际上我们实现的垃圾回收算法,要能够结合以上的三种方式。取长补短

JavaEE之JVM简述_第19张图片 

 

 

 

你可能感兴趣的:(JavaEE,java-ee,java,开发语言)