JVM总结
JVM是什么?
JVM是Java程序运行的底层平台,它是一台虚拟出来的机器,可以在任何操作系统上运行,这也是Java语言跨平台的关键。
JVM三个方面: 内存管理、类的加载和执行流程、垃圾回收机制
内存管理
运行时内存分为栈区、堆区、方法区,具体的话有以下几种:
程序计数器
程序计数器主要负责线程的上下文切换
堆
堆中主要负责存放对象实例信息,垃圾回收也是在这里面进行
本地方法栈
本地方法栈主要调用加载的本地方法,每个栈帧中存放局部变量表、操作数栈、动态链接和返回地址
虚拟机栈
虚拟机栈主要调用native方法
方法区
方法区中负责存放常量、静态变量、编译后的代码等
类的加载和执行流程
1)类先经过类加载器将字节码文件转换为class对象,但是这个时候还不能使用它
2)此时类结构信息存储在方法区内,再经过对结构信息验证是否合法,一旦通过验证,就会为类中的静态变量分配内存空间并初始化
3)将类结构中的符号和常量表的符号进行解析转换为直接引用,这时类就拥有了执行能力
4)进行初始化,在new一个对象之前就会执行static代码块
垃圾回收机制
可以分为内存动态分配和内存回收两大块。而内存的分配方式一定程度上取决于使用何种垃圾回收算法和垃圾回收器