JVM是什么?
Java Virtual Machine: java 程序的运行环境(java二进制字节码运行环境)
好处:
一次编译,到处运行: 屏蔽了字节码文件和底层操作系统差异,对外提供一致的运行环境
自动内存管理,垃圾回收:
数组下标越界检查: 在执行书序元素访问时,自动检查下标是否在合法范围(c++代码)
多态:
提供虚方法表和方法重载重写
类在方法区都有方法表,存方法和对应代码地址
方法重载就是同一个类中定义同名方法(参数返回值不同)
方法重写就是重新定义父类方法,覆盖父类的行为(实际就是覆虚方法表)
当JVM要调用某个对象的某个方法时,会先从对象头中获取该对象所属类的类型信息
再根据常量池中的符号引用找到该类的方法表,再据方法表中的索引找到具体代码
地址,最后执行该地址处的代码。实现根据对象的实际类型来调用相应的方法。
比较: jvm,jre,jdk
JVM 虚拟机: 屏蔽java文件和底层的操作系统的差异
JRE java运行环境: JVM+基础类库
JDK java开发工具包: JVM+基础类库+编译工具
即: jre= jvm +基础类库
jdk= jvm +基础类库 +编译工具
Javase= jvm +基础类库 +IDE工具
Javaee= jdk +应用服务器 +IDE工具
学jvm有啥用?
面试
理解底层的实现原理
中高级程序员的必备技能
掌握什么?
1. JVM 内存结构的组成、各部分功能作用,学会利用内存诊断工具排查内存相关问题;
2. JVM 的招牌功能-垃圾回收机制是如何工作的,如何进行垃圾回收调优;
3. Java 程序从编译为字节码到加载到运行的全流程,各个阶段的优化处理;
4. 了解 Java 内存模型相关知识,见识多线程并发读写共享数据时的问题和 Java 的解决方案
路线: 内存结构 方法区,Heap堆,JVM虚拟机栈,程序计数器,本地方法栈
执行引擎 interpreter解释器,JIT即时编译器,GC垃圾回收
类加载器 ClassLoader