Java虚拟机一直是比较重要的知识点,是Java高级开发必会的。本文为你总结了关于JVM的22个重点、难点,图文并茂的向你展示和JVM有关的重点知识。全文共7000字左右。另外,文末有福利哦~
概念
虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。
Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM、Apache Harmony、Google Dalvik VM、Microsoft JVM…
启动流程
基本架构
Java运行时编译源码(.java)成字节码,由jre运行。jre由java虚拟机(jvm)实现。Jvm分析字节码,后解释并执行。
JVM由三个主要的子系统构成:
1.类加载器子系统
2.运行时数据区(内存)
3.执行引擎
类加载器子系统
类装载包括了加载,连接(验证、准备、解析(可选)),初始化。其中类加载工作由ClassLoader及其子类负责。
加载:在硬盘上查找并通过IO读入字节码文件
连接:执行校验、准备、解析(可选)步骤
校验,校验字节码文件的正确性
准备,给类的静态变量分配内存,并赋予默认值
解析,将符号引用转为直接引用,类装载器装入类所引用的其他所有类
初始化:对类的静态变量初始化为指定的值,执行静态代码块
类加载器体系结构
1.启动类加载器:负责加载JRE的核心类库,如jre目标下的rt.jar,charsets.jar等.
2.扩展类加载器:负责加载JRE扩展目录ext中JAR类包
3.系统类加载器:负责加载ClassPath路径下的类包
4.用户自定义加载器:负责加载用户自定义路径下的类包
最后
还总结出了适合于1-5年以上开发经验的java程序员面试涉及到的绝大部分面试题及答案做成了文档和学习笔记文件以及架构视频资料和高清架构进阶学习导图免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。
资料领取方式:加QQ群:935692859 进群免费领取资料!
点击链接加入群聊【Java架构交流二群】:点击进群