作者:等艺来绵阳 | 来源:互联网 | 2024-10-31 19:10
篇首语:本文由编程笔记#小编为大家整理,主要介绍了java虚拟机---内存相关的知识,希望对你有一定的参考价值。 java虚拟机---内存 Java虚拟机,即JVM,负责运行java程序,每个j
篇首语:本文由编程笔记#小编为大家整理,主要介绍了java虚拟机---内存相关的知识,希望对你有一定的参考价值。
java虚拟机---内存
Java虚拟机,即JVM,负责运行java程序,每个java程序都运行在一个具体jvm实例上。Java虚拟机的体系架构分为:类装载子系统、运行时数据区、执行引擎。类装载子系统即负责加载、验证、解析、初始化java类的系统;Java虚拟机在运行一个程序时需要储存很多数据,如类装载信息、创建的实例对象、方法调用的参数、局部变量、中间值等,虚拟机把这些信息都储存在“运行时数据区”里,即这里讲的JVM内存;执行引擎则是以字节码形式的class文件为输入,运行程序输出计算结果。
java虚拟机内存是一个概念性的东西,官方并没有给出具体的实现,知识给出了一个标准或者说是规范,各java虚拟机厂商可以根据此规范设计各自的虚拟机,用户还可以通过指令集设置各部分内存的大小。
JVM内存包括几个区域:方法区、堆、java栈、PC寄存区、本地方法栈。
方法区:储存类信息、常量、静态变量、经过编译之后的字节码,所有线程共享
堆:储存实例对象信息,所有线程共享
Java栈:方法调用的状态,以栈帧的形式储存方法调用时的参数传递、局部变量、计算中间值等信息、返回地址,每个线程一个
PC寄存器:指向下一条将被执行的指令,每个线程一个
本地方法栈:与java栈功能类似,只是java栈为虚拟机提供执行java方法的服务,而本地方法栈为虚拟机提供执行本地方法的服务