首页 > 试题广场 >

说说你了解的JVM内存模型

[问答题]
说说你了解的JVM内存模型
类加载子系统:根据全限定名来载入类; 执行引擎:执行那些被载入类的方法的指令; 运行时数据区:在程序运行时,存储程序的内容,例如:字节码、对象、参数、返回值等。运行时数据区又分为方法区、堆、栈、程序计数器
发表于 2022-04-26 15:19:41 回复(0)
JVM由三部分组成:类加载子系统、执行引擎、运行时数据区 1、类加载子系统:可以根据指定的全限定名来载入类或接口。 2、执行引擎:负责执行那些包含在被载入类的方法中的指令。 3、运行时数据区:分为方法区、堆、虚拟机栈、本地方法栈、程序计数器。当程序运行时,JVM需要内存来存储许多内容,例如:字节码、对象、参数、返回值、局部变量、运算的中间结果等,把这些东西都存储到运行时数据区中,以便于管理。
发表于 2022-05-01 17:15:50 回复(0)
这说的不是内存结构吗?内存模型不应该是多线程相关的吗,像工作内存、主内存
编辑于 2022-09-20 23:43:30 回复(0)
1:类装载子系统:主要通过类的全限定名来加载类 2:字节码执行引擎:是用于执行被载入类的方法的指令。 3:运行时数据区:主要包括虚拟机栈(又叫线程栈,每有一个线程就会创建一个线程栈,主要存储用于线程操作的数据,分为局部变量表,操作数栈,动态链接和方法出口),本地方法栈(和虚拟机栈类似,它主要用于存储本地方法中的一些相关数据),程序计数器(用于记录正在执行的虚拟机字节码指令的位置或地址),堆(主要用于存储创建出来的对象,是垃圾回收的主要区域)和方法区(存储已经被加载的类信息,常量,静态变量等,也是垃圾回收的主要区域);
发表于 2022-05-12 10:43:18 回复(0)
JVM由三部分组成:类加载子系统,执行引擎,运行时数据区。 类加载子系统可以根据限定名来加载类或者接口。包括加载(选择类加载器),链接(准备,验证,解析),初始化 执行引擎负责执行哪些包含在被载入类的方法中的指令,主要充当高级语言和机器语言的翻译,主要包括编译器和解释器。 运行时数据区用来存储程序运行时用到的许多内容,字节码,对象,参数,返回值,局部变量,运算的中间结果等等。运行时数据区主要包括五个部分:堆,方法区,程序计数器,本地方法栈,虚拟机栈。
发表于 2022-05-07 15:00:09 回复(0)
JVM内存模型包括:程序计数器、本地方法栈、虚拟机栈(栈区)、方法区(元空间)和堆(注:都存放在运行时数据区中)。程序计数器、虚拟机栈、本地方法栈是每个线程所独有的。程序计数器存放的是下一条要执行的指令的地址 。本地方法栈存放的是native方法。虚拟机栈中每调用一个方***创建一个栈帧,存放的是局部变量、方法等。堆存放的是对象和数组。方法区存放的是静态变量、常量、常量池等。
编辑于 2023-05-16 14:03:11 回复(0)
类加载子系统:根据全限定名来载入类; 执行引擎:执行那些被载入类的方法的指令; 运行时数据区:在程序运行时,存储程序的内容包括字节码,返回值,对象等,它又被分为堆,栈,方法区,本地方法栈和pc,只有堆和方法区是线程共享的内存区域,其他都是线程私有的区域;在jvm内存调优时,只有在堆区域中调优。堆存放new的对象和数组,栈存放对象的引用和基本的数据类型,方法区存放是常量,类模板class和静态变量。本地方法栈是调用本地接口JNI,pc是就是一个指针,指向方法区中的方法字节码。
发表于 2023-02-28 15:38:26 回复(0)
内存模型由类加载子系统,运行时数据区,执行引擎,本地库接口组成,运行时数据区又分为 方法区,堆, 虚拟机栈,本地方法栈,程序计数器。 其中栈,程序计数器是单线程独享的内存,随线程创建和销毁而存在,销毁。执行引擎执行那些被载入类的方法的指令;方法区和堆是线程之间共享的内存区域,
发表于 2022-06-06 16:36:49 回复(0)
别误导人行吗,问的是内存模型,不是JVM结构;我来: 线程私有区 - 程序计数器:保存程序执行的行号,占用小 - 本地方法栈:保存线程本地的native方法信息 - JVM栈: - 局部变量表:保存实例方法的this对象,方法参数,方法中的局部变量 - 操作数栈:临时保存变量 - 栈帧: - 动态链接:字节码中符号引用的编号到内存地址的映射关系 - 方法出口:该方法执行结束后要跳转到的下一条指令的地址 - 异常表:异常捕获的生效范围和发生异常后程序要跳转的指令的位置 共享内存区 - 堆区:字符串常量池(管理字符串),共享变量(全局变量) - 方法区:运行时常量池(管理基本数据类型),类的元信息(.class文件信息)
发表于 2024-05-21 11:19:37 回复(0)
jvm由三部分组成:类加载子系统,运行引擎,运行时数据区 类加载子系统:根据全限定名载入类或接口 运行引擎:执行被载入类的方法中的指令 运行时数据区:jvm在运行时需要内存来存放数据,如字节码,对象,参数,返回值,局部变量,运行的中间结果等,jvm讲这些数据存储在运行时数据区,以便于管理,运行时数据区又可以分为堆,方法区,虚拟机栈,本地方法区栈,程序计数器 虚拟机栈,本地方法区栈,程序计数器是线程私有的。 程序计数器的作用: 1字节码解释器通过改变程序计数器来依次执行指令,实现代码的业务控制,如顺序执行,循环,选择,抛出异常等 2字节码解释器能够记录线程运行的位置,当线程切换回来时线程能够知道运行到哪了 虚拟机栈:为java方法服务,每一个java方法执行都会创建一个栈帧用来存储局部变量表,操作数表和常量池引用,方法从执行到结束就是栈帧入栈和出栈的过程,可能会出现StackOverFlowError和OutOfMemoryError StackOverFlowError:虚拟机栈内存大小不允许动态扩容时,当请求请求栈的深度大于栈内存的最大深度时,抛出StackOverFlowError OutOfMemoryError:虚拟机栈的大小允许动态扩容,当虚拟机请求栈时内存用完了,栈无法动态扩容了,抛出OutOfMemoryError异常 本地方法区栈:与虚拟机栈不同,虚拟机栈为java方法服务,本地方法区栈为虚拟机的native方法服务,也会抛出StackOverFlowError和OutOfMemoryError 堆,方法区,运行时常量池为多个线程所共享。 堆:堆是java程序管理内存最大的一块。堆用来存放新创建的对象实例,几乎所有对象和数组都在这里分配内存。由于jvm垃圾收集器的分代收集机制,堆可以分为新生代和老年代,用来提高垃圾收集速度。 方法区:用来存放已被虚拟机加载的类,常量,静态变量,编译器即时编译后的代码等,在jdk1.8时被去除用元空间替代,元空间使用的是直接内存 运行时常量池:运行时常量池是方法区的一部分,用来存放编译时产生的字面量和符号引用。字面量:文本字符串,被final修饰的常量的值,基本数据类型的值。符号引用:类和结构的完全限定名,字段的名称和描述符,方法的字段和描述符
发表于 2024-05-19 18:58:22 回复(0)
jvm分为类加载子系统,根据全限定名加载类。执行引擎,执行那些被包含在载入类的方法中的指令。运行时数据区:分为方法区,堆,虚拟机栈,本地方法栈。方法区主要包含一些基本信息,类的信息,字段信息,方法信息,静态量,常量,即时编译后优化的代码缓存。jdk1.7之前,字符串常量池和运行时常量池在方法区,jdk7时字符串常量池被移到了堆中。虚拟机栈:包含局部变量表,动态链接,操作数栈,返回地址。堆:主要包含对象的实例化,字符串常量池(jdk1.7及以后) 本地方法栈:跟虚拟机栈相比,这里执行的是本地方法。程序计数器:记录下一条指令的地址,多线程环境下用于记录当前线程执行的位置。
编辑于 2024-04-12 00:26:44 回复(0)
JVM由三部分组成:类加载子系统、执行引擎、运行时数据区
发表于 2023-08-01 14:13:01 回复(0)
jvm主要有三个组件。类加载系统,运行时数据区,执行引擎。类加载系统主要负责加载类或者接口,执行引擎负责执行被载入类方法中的指令。运行时数据区:主要存放程序运行过程中的一些变量,方法,运算结果,对象等等 以便于JVM对其进行管理。运行时数据区又可以分为,方法区,队,虚拟机栈,本地方法栈,pc。其中堆和方法区是线程之间共享的。其他的是县城之间私有的。
发表于 2023-02-02 09:27:50 回复(0)
JVM内存模型主要由三部分组成:类加载子系统、执行引擎、运行时数据区。
1.类加载子系统:根据全限定名称来载入类或接口。
2.执行引擎:负责执行那些被包含在被载入类的方法中的指令。
3.运行时数据区,用来存储字节码,对象,参数,返回值,局部变量及运行结果等。
运行时数据区包括:方法区,堆,虚拟机栈,本地方法栈,程序技计数器。
方法区和堆被所有线程所共享,存在线程安全问题。
虚拟机栈,本地方法栈和程序计数器线程私有,不存在线程安全问题。
编辑于 2023-02-01 16:34:54 回复(0)
JVM内存模型包括三个部分,1、类加载子系统:可以根据全限定名来载入类和接口;2、执行引擎:执行那些包含在被加载类的方法中的指令;3、运行时数据区:程序运行时,JVM将字节码、对象、参数、返回值、局部变量和运算中间值等存储在运行数据区内,其中包括方法区、堆、本地方法栈、程序计数器。
发表于 2022-08-13 14:50:04 回复(0)
类加载子系统:加载类,执行引擎:执行类中的方法,运行时数据区 jvm的内存主要分为线程私有和公公内存,线程私有的为:虚拟机栈,程序计数器,本地方法栈,共有的为,堆,直接内存,方法区
发表于 2022-08-01 12:39:45 回复(0)
JVM内存模型主要由三部分组成:类加载子系统、执行引擎、运行时数据区。1.类加载子系统:根据全限定名称来载入类或接口。2.执行引擎:负责执行那些被包含在被载入类的方法中的指令。3.运行时数据区,用来存储字节码,对象,参数,返回值,局部变量及运行结果等。运行时数据区包括:方法区,堆,虚拟机栈,本地方法栈,程序技计数器。方法去和堆被所有线程所共享,存在线程安全问题。虚拟机栈,本地方法栈和程序计数器线程私有,不存在线程安全问题。
发表于 2022-05-27 17:03:12 回复(0)
jvm内存模型和Java内存模型(jmm)是两个概念。jvm内存模型是运行时数据区,主要包括程序计数器,堆,虚拟机栈,本地方法栈,方法区。Java内存模型是是一个Java虚拟机规范,它规定了所有的变量都存储在主内存里,每条线程有自己的工作内存,线程的工作内存里保存了被该线程使用的变量的副本,线程对变量的操作都必须在自己的工作线程中进行,不能够直接操作主内存的变量,不同线程间的工作内存是隔离的,线程间变量值的传递需要通过主内存完成
发表于 2024-06-07 17:22:29 回复(0)
JVM由三部分组成:类加载子系统、执行引擎、运行时数据区。类加载子系统:可以根据指定的全限定名来载入类和接口。执行引擎:负责执行那些包含在被载入类的方法中的指令。运行时数据区:当程序运行时,JVM需要存储许多内容,列如:字节码、对象、参数、返回值、局部变量、运算的中间结果等,JVM会把这些东西存储到运行时数据区中,以便管理。其中运行时数据区又可分为方法区、堆、虚拟机栈、本地方法栈、程序计数器。方法区和堆事线程之间共享的内存区域,而虚拟机栈、本地方法栈和程序计数器时每个线程私有的。
发表于 2024-05-26 22:17:28 回复(0)
程序计数器:可以看作当先线程执行字节码指令的行号指示器,记录当前线程正在执行的字节码指令的地址,如果执行的是本地方法,则程序计数器为空
发表于 2024-05-14 16:51:59 回复(0)