常熟公司做网站,定制型网站制作明细报价表,石家庄哪家公司做网站好,丹东建设工程信息网站关于什么是JVM#xff1f;
作用#xff1a;
运⾏并管理Java 源码⽂件所⽣成的Class⽂件#xff0c;在不同的操作系统上安装不同的JVM #xff0c;从⽽实现了跨平台的保证。 ⼀般情况下#xff0c;对于开发者⽽⾔#xff0c;即使不熟悉JVM 的运⾏机制并不影响业务代码的…
关于什么是JVM
作用
运⾏并管理Java 源码⽂件所⽣成的Class⽂件在不同的操作系统上安装不同的JVM 从⽽实现了跨平台的保证。 ⼀般情况下对于开发者⽽⾔即使不熟悉JVM 的运⾏机制并不影响业务代码的开发因为在安装完JDK 或者JRE 之后其中就已经内置了JVM 所以只需要将Class⽂件交给JVM 运⾏即可。 可以看出JVM的大致流程是把一个class 文件通过类加载器加载进系统然后放到不同的区域通过编译器编译。
1第一个部分Class Files 在Java 中Class⽂件是由源码⽂件⽣成的⾄于源码⽂件的内容是每个Java 开发者在JavaSE 阶段的必备知识这⾥就不再赘述了我们可以关注⼀下Class⽂件的格式⽐如其中的常量池、成员变量、⽅法等这样就能知道Java 源码内容在Class⽂件中的表示⽅式
2第二个部分Class Loader Subsystem 即类加载机制 Class⽂件加载到内存中需要借助Java 中的类加载机制。类加载机制分为装载、链接和初始化其主要就是对类进⾏查找、验证以及分配相关的内存空间和赋值
3第三个部分Runtime Data Areas 也就是通常所说的运⾏时数据区 其解决的问题就是Class⽂件进入内存之后该如何进⾏存储不同的数据以及数据该如何进⾏流转。比如
Method Area 通常会储存由Class⽂件常量池所对应的运⾏时常量池、字段和⽅法的元数据信息、类的模板信息等Heap 是存储各种Java 中的对象实例Java Threads 通过线程以栈的⽅式运⾏加载各个⽅法Native Internal Thread可以理解为是加载运⾏native 类型的⽅法PC Register 则是保存每个线程执⾏⽅法的实时地址。
这样通过运⾏时数据区的5 个部分就能很好地把数据存储和运⾏起来了。 4第四个部分Garbage Collector 也就是通常所说的垃圾回收
就是对运⾏时数据区中的数据进⾏管理和回收。回收机制可以基于不同的垃圾收集器⽐如Serial、Parallel、CMS、G1、ZGC 等可以针对不同的业务场景选择不同的收集器只需要通过JVM 参数设置即可。如果我们打开hotspot 的源码可以发现这些收集器其实就是对于不同垃圾收集算法的实现核⼼的算法有3 个标记-清除、标记-整理、复制 5第五个部分是JIT Compiler 和Interpreter
通俗理解就是翻译器Class 的字节码指令通过JIT Compiler 和Interpreter 翻译成对应操作系统的CPU 指令只不过可以选择解释执⾏或者编译执⾏在HotSpot JVM默认采用的是这两种⽅式的混合。 6第六就是JNI 的技术 如果我们想要找Java 中的某个native⽅法是如何通过C 或者C实现的那么可以通过Native Method Interface 来进⾏查找也就是所谓的JNI 技术。