自学内容网 自学内容网

JVM面试题-说一下JVM主要组成部分及其作用

总体来说,方法区和堆是所有线程共享的内存区域;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域,运行时数据区域就是我们常说的JVM的内存。

  • 类加载子系统:根据给定的全限定名类名(如:java.lang.Object)来装载class文件到运行时数据区中的方法区中,类加载器主要分为三种:启动类加载器、扩展类加载器和应用程序类加载器。
  • Java堆:堆就是给对象分配内存,用来存放对象实例
  • 方法区:它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据(注意这里没有局部变量,局部变量是存在栈中的)
  • 程序计数器:用于记录当前线程所执行的字节码指令地址
  • 虚拟机栈【Java方法】:每个java方法被执行的时候都会同时在虚拟机栈中创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、返回方法地址等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程,Java虚拟机栈也是线程私有的,它的生命周期与线程相同。
  • 本地方法栈:与虚拟机栈类似,用于支持Java调用本地方法(Native Method)。本地方法是用C、C++等编写的方法,可以直接调用操作系统的底层接口和硬件资源,实现Java程序无法完成的功能。
  • 执行引擎(解释器):负责将编译后的字节码指令翻译成机器码并执行。执行引擎主要分为两种:解释器和即时编译器。
  • 本地库接口:本地库接口(Native Interface,JNI)是Java提供的一种机制,用于在Java程序中调用本地方法(Native Method)。本地方法是用C、C++等编写的方法,可以直接调用操作系统的底层接口和硬件资源,实现Java程序无法完成的功能。

原文地址:https://blog.csdn.net/qq_50801874/article/details/142414677

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!