一、什么是JVM
定义:Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境)
好处:
一次编写,到处运行:JVM屏蔽了字节码和底层操作系统的差异,对外提供了一致的运行环境。解释的方法执行二进制字节码来达到平台的无关性。
自动内存管理,垃圾回收功能:自动内存的管理机制,垃圾回收功能。程序员编码不当很容易造成内存泄漏
数组下标越界检查:在C语言中是没有数组下标越界检查的,若是一不小心数组越界了就有可能覆盖其他内存的数据的。
多态:扩展性得到巨大的提升,内部使用虚方法表的机制来实现多态
比较:jre、jdk以及jvm
二、学习jvm的用途
帮助面试
理解底层的实现原理:掌握字节码相关知识。如自动装拆箱、foreach增强、动态代理
中高级程序员必备技能:快速定位分析生产环境中的问题。
三、常见的jvm
掌握了jvm的规范,我们也可以开发出自己的jvm。
之后学习使用的就是Hot-Spot为准的jvm(oracle的)。
四、学习路线
1、jvm的内存结构,包含内存的一些组成部分。
2、执行引擎中的垃圾回收机制。
3、类的字节码结构,Java Class。
4、类加载器classloader。
5、类运行时的优化:JIT Compiler即时编译器。