从0到1入门JVM
一、JVM简介
JVM(Java Virtual Machine)java程序的运行环境(java二进制字节码的运行环境)
二、JVM组成与执行流程
三、什么是程序计数器?
定义:线程私有的,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址
四、什么是Java堆?
①简介:java堆是线程共享的区域,主要用来保存对象实例,数组等,当堆中没有内存空间可分配给实例,也无法再扩展时,则抛出OutOfMemoryError异常
②组成:年轻代+老年代
- 年轻代:Eden区,两个大小严格相同的Survivor区
- 老年代:主要用于保存生命周期长的对象,一般是一些老的对象
③jdk1.7和jdk1.8的区别
- 1.7中有一个永久代,存储的是类信息,静态变量,常量,编译后的代码
- 1.8移除了永久代,把数据存储到了本地内存的元空间中,防止内存溢出
五、什么是虚拟机栈?
Java 虚拟机栈(Java Virtual machine Stack)
六、什么是方法区/元空间?
七、什么是直接内存?
直接内存并不属于JVM中的内存结构,不由JVM进行管理。是虚拟机的系统内存
常见于NIO操作时,用于数据缓冲区,分配回收成本较高,但读写性能高,不受JVM内存回收管理