你了解JVM内存结构吗?下面我给大家介绍一下JVM的内存结构。它主要包括两个子系统和两个组件。这两个组件是Runtimedataarea组件和Nativeinterface组件。)组件
JVM内存结构
我最近研究了一些Java内存泄漏问题,并与我原来的几个朋友进行了讨论。经过深入研究,我发现它们的存在。JVM中还有很多以前不知道的细节。要分析的话,首先看一下JVM的内部结构——
怎么样。如,JVM内存结构主要包括两个子系统和两个组件。这两个子系统是类加载器子系统,而Executionengine子系统的两个组件是Runtimedataarea和Nativeinterface()组件。本地接口组件
Classloader子系统的作用
根据Runtime数据区将类文件的内容加载到方法区(methodarea)中在指定的完全限定类名(例如javalangObject)上。Java程序员可以扩展javalangClassLoader类来编写自己的类加载器。
执行引擎。
执行类中指令的核心。JVM规范(JDK)的任何实现都是运行时引擎。各种JDK,比如Sun的JDK、IBM的JDK,一般好坏取决于它们实现的执行引擎。
原生接口组件
。与本机库的互操作是与其他编程语言交互的接口。当你调用自己的方法时,你就进入了一个不再局限于虚拟机的新世界。所以也很容易出现自己的heapOutOfMemory。无法被JVM控制
RuntimeDataArea组件
这就是我们常说的JVM内存,它基本上分为五个部分——
堆(heap))Java虚拟实例中只有一个堆空间
MethodArea内存中Methodarea中保存着加载的类的信息。当虚拟机加载某种类型时,它就会使用它。班级。加载器找到对应的类文件,然后读取类文件的内容并传递给虚拟机。
JavaStack虚拟机(Java栈)在Loading时会直接对Javastack只执行两个操作或弹出堆栈
ProgramCounter每个线程都有自己的PC寄存器。PC寄存器的内容在线程启动时创建,始终指向一条指令的地址。这里的地址可以是本地指针,也可以是方法区中初始方法指令对应的偏移量。
Nativemethodstack(本地方法栈)存储的是该区包含的native方法的地址
lixixinzhi/文章/program/Java/hx/201311/26038
运行Java程序时,Java虚拟机(JVM)将其管理的内存划分为几个不同的数据区域。这些区域具有不同的用途及其创建和销毁点,其中一些区域随着虚拟机进程启动而存在,一些区域根据用户线程销毁的开始和结束而创建和销毁。根据《Java虚拟机规范(第2版)》,Java虚拟机管理的内存包括以下运行时数据区域,如下:
p>上一篇:jvm虚拟机内存模型
下一篇:java 内存结构