jvm 概述
工作流程:类加载器将class文件加载到内存,并对class文件中的数据进行检验、准备、解析、初始化,执行引擎从内存中获取数据进行处理,并将处理后的数据返回到内存,在此期间,垃圾回收器负责对运行时内存中产生的垃圾进行回收,释放内存空间
******************************
主要子系统:类加载器、运行区域、执行引擎、垃圾收集器
类加载器:启动类加载器、拓展类加载器、应用程序类加载器、用户自定义类加载器
运行区域:程序计数器、虚拟机栈、本地方法栈、堆、方法区
执行引擎:解释器(程序启动时,可用解释器快速执行)、编译器(对热点代码编译优化,提高执行效率)
垃圾收集器:单线程垃圾收集器、并行垃圾收集器、并发垃圾收集器
单线程垃圾回收器:垃圾回收时,只有一条垃圾回收线程运行(serial、serial old)
并行垃圾回收器:垃圾回收时,多条垃圾回收线程可同时运行(parallel scavenge、parallel old)
并发垃圾回收器:垃圾回收时,用户线程可以和垃圾回收线程一起运行(G1、ZGC)
说明:parnew在java 10已经移除,cms从java 9开始不推荐使用,在java 14中已经移除