JVM(Java Virtual Machine)
1.说明
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
2.一图胜百文
3.类加载子系统
使用JVM类加载的双亲委派模型
4.JVM 内存
4.1线程共享区
方法区(JDK8 Metaaspace):存放类的结构信息
堆内存区(存储的是对象)可以分为年轻代(伊甸园区,幸存区1,幸存区2),老年代
4.2.线程私有区
Java方法栈:1.调用具体的方法.2.栈帧(先进先出原则):存储方法具体信息
本地方法栈:底层使用C/C++实现.
Java方法栈和本地方法栈之间可以互相调用
程序计数器:记录当前线程执行的位置
5.JVM执行引擎
5.1.解释器:解释执行字节码(解析一次执行一次)
5.2.JIT编译器:对重复执行的代码(使用频率高)(热点代码)编译后放入缓存中,
下次使用直接从缓存中取.
5.3.缓存:存放JIT编译器的数据
5.4.垃圾回收GC
5.4.1.年轻代触发GC
大部分new的对象都会存放在年轻代
当伊甸园区对象到一定程度时,会触发GC,GC回收后,伊甸园幸存的对象会被放入幸存区1,
当伊甸园区对象再次触发GC垃圾回收后,会将伊甸园和幸存1区幸存的对象放入幸存区2,清空幸存区1,
以此循环清理,每次垃圾回收后保持一个幸存区是空的,方便下次GC后,幸存的对象放入幸存区.
5.4.2.老年代触发GC
老年代会触发Full GC,耗时比较长.原因如下:
1.GC清理垃圾对象.2.对内存进行整理
6.操作系统
Windows, Linux,Mac…
感谢您看完这篇文章,JVM方面正在学习和摸索中,如有问题,欢迎指正和交流