JAVA_虚拟机

根据JAVA虚拟机规范,JAVA虚拟机所管理的内存包括以下几个运行时数据区域:

JAVA_虚拟机_第1张图片

JAVA_虚拟机_第2张图片

JAVA_虚拟机_第3张图片

JAVA_虚拟机_第4张图片

JAVA_虚拟机_第5张图片

JAVA_虚拟机_第6张图片

JAVA_虚拟机_第7张图片

JAVA_虚拟机_第8张图片

JAVA_虚拟机_第9张图片

JAVA_虚拟机_第10张图片

JAVA_虚拟机_第11张图片

Class类文件的结构:

JAVA_虚拟机_第12张图片

JAVA_虚拟机_第13张图片

JAVA_虚拟机_第14张图片

JAVA_虚拟机_第15张图片

JAVA_虚拟机_第16张图片


JAVA_虚拟机_第17张图片

JAVA_虚拟机_第18张图片


JAVA_虚拟机_第19张图片

垃圾收集算法:

1,标记-清除
当确定为收集对象后,标记然后清除。效率不高,有连续的内存碎片,此时如果分配较大对象时找不到连续内存空间,不得不提前触发垃圾收集。
2,复制
将可用内存分为两块相等的区域,一块用完,把存活的对象复制到另一块去,清理用完的一块内存空间。代价是内存缩小了一半。
3,标记-整理
和标记清除类似,但不是对可回收对象进行清理,面是让所有活着的对象向一端移动,然后清理掉边界以外的内存空间。
4,分代收集算法
根据对象存活周期不同将内存分为几块,一般是新生代和老年代。
新生代对象存活较少------复制算法。
老年代对象存活较久------采用标记清除和标记整理算法

垃圾收集器:

***注意:并行指的是多线程执行回收,此时用户线程停止工作 。
而并发指的是多线程执行回收,此时用户线程不停止工作。
1,Serial收集器:
单线程执行,其它线程全部停止工作,stop the world。
2,ParNew收集器:
多线程执行,可以并发工作。
3,Parallel Scavenge收集器:
采用复制算法的新生代收集器,并行工作。
4,Serial Old收集器:
serial的老年代版本,采用的是标记-整理算法。
5,Parallel Old 收集器:
是Parallel Scavenge的老年代版本
6,CMS收集器(Concurrent Low Pause):
以最短回收停顿时间为目标,默认开启线程(cpu数量+3)/4
7,G1收集器:
优点--并发与并行,分代收集,空间整理(不会产生内存碎片),可预测的停顿。

常量池:

JAVA_虚拟机_第20张图片

类加载过程:

1,加载:

JAVA_虚拟机_第21张图片

2,验证:

1,

基于二进制流的数据验证
JAVA_虚拟机_第22张图片
JAVA_虚拟机_第23张图片

JAVA_虚拟机_第24张图片

JAVA_虚拟机_第25张图片

JAVA_虚拟机_第26张图片

3准备:

JAVA_虚拟机_第27张图片

4解析:

JAVA_虚拟机_第28张图片

5初始化:

JAVA_虚拟机_第29张图片

JAVA_虚拟机_第30张图片

你可能感兴趣的:(JAVA_虚拟机)