目录
3.Parallel Scavenge收集器(新生代:标记-复制)
4.Serial Old/PS MarkSweep收集器(老年代:标记-整理)
概要
JVM由三个主要子系统组成
- 类加载子系统(Class Loader)
- 类加载子系统(Runtime Data Area)
- 执行引擎(Execution Engine)
一、类加载子系统(Class Loader)
1.类加载子系统执行流程
2.全盘委派机制
当一个ClassLoader加载一个类的时候,除非显示的使用另外一个ClassLoader,该类所依赖和引用的类也由这个ClassLoader载入
3.双亲委派:
为什么要使用双亲委派:
1.防止重复加载同一个类,并且类信息不同
2.沙箱机制,让虚拟机更安全
从反向思考这个问题,如果没有双亲委派模型而是由各个类加载器自行加载的话,如果用户编写了一个java.lang.Object的同名类并放在ClassPath中,多个类加载器都去加载这个类到内存中,系统中将会出现多个不同的Object类,那么类之间的比较结果及类的唯一性将无法保证,而且如果不使用这种双亲委派模型将会给虚拟机的安全带来隐患。所以,要让类对象进行比较有意义,前提是他们要被同一个类加载器加载。
二、运行时数据区(Runtime Data Area)
1.运行时数据区结构
2.线程处理数据时,栈的处理流程示意图