JVM是JAVA语言可以在多环境下运行的根本,探究JVM机制能让我们更深入的了解这门语言是如何运行的
JVM内存模型总览
之后给大家介绍各个部分的大概作用
类加载器(Classloader)
作用:将Class文件加载进JVM内存中
详细可看JAVA类加载机制
栈(JVM Stack)
作用:栈是用来程序运行的方法的容器,一个线程有一个栈,每一个方法对应一个栈帧,栈帧中存放着这个方法运行时的各类数据。
详细可看JAVA栈与栈帧
程序计数器(The pc Register)
程序计数器中存放着程序的运行位置,是服务于多线程的,作用类似于断点记录。其计数修改由字节码执行引擎负责。每个线程都会被分配一个。
堆(Heap)
作用:存放new出来的对象,其他地方存的都是对象在堆内的地址
详细可看堆与CG
方法区(Method Area)
JDK1.8前叫持久栈,1.8后叫元空间,里面存的是常量、静态变量和类信息等
本地方法栈(Native Method Stacks)
本地方法栈与虚拟机栈作用非常相似,其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native) 方法服务,即非java方法一般是使用C语言进行实现。
之所以调用本地方法,是因为java代码有一定的限制,java有时候不能和操作系统底层交互,所以就需要使用C或者C++ 等一些别的语言和操作系统进行交互,然后由java代码调用这些封装好的本地方法接口间接和操作系统进行交互。
以上是笔者结合自己的理解所写,如有错误欢迎指出,望共同进步,peace~