JVM的内存结构主要分为三个部分:
类加载器子系统、运行时数据区、执行引擎。
在程序中声明和使用的变量全部都保存在运行时数据区。
运行时数据区又分为:方法区、PC寄存器、本地方法栈、堆、Java栈。
方法区:方法区中主要是保存类型(类、接口)的信息,包括:
全限类名、直接父类的全限类名、
类中的字段和方法信息、
这个类型是接口还是类、
类的修饰符、
所有实现接口的全限类名。
*除了上述内容之外,还包含一些比较特殊的子级区域:
【常量池】 保存常量
【静态区】 保存类中使用static修饰的变量、静态代码块
一个类的所有实例全都共享静态区中的内容。
PC寄存器:保存下一条指令地址
本地方法栈:保存的就是本地方法(native修饰的方法)
native修饰的方法直接调C++,
已经不是Java层面代码解决的问题了。
堆和栈是JVM内部的两种内存区域,作用都是用来保存数据。
但是保存的数据特点以及保存数据的类型不同。
栈区:空间较小,数据存取速度比较快。
适合存放小型的数据、需要频繁进行存取的数据。
在Java中栈区保存局部变量。这些局部变量包括:
1、基本数据类型变量
2、对象的引用
堆区:空间较大,但是存取数据的速度较慢。
适合存放大型的数据、保存之后就不会频繁产生位移的数据。
在Java中保存对象的本身数据
简单了解JVM的内存结构
最新推荐文章于 2023-12-02 18:42:43 发布