详解JVM内存结构组成

 我来答
大沈他次苹0B
2022-11-24 · TA获得超过7322个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:177万
展开全部

  你对JVM内存结构是否了解 这里和大家分享一下 JVM内存结构主要包括两个子系统和两个组件 这两个组件分别是Runtimedataarea(运行时数据区域)组件和Nativeinterface(本地接口)组件

   JVM内存结构

  近期看了看Java内存泄露的一些案例 跟原来的几个哥们讨论了一下 深入研究发现JVM里面还是有不少以前不知道的细节 这里稍微剖析一下 先看一看JVM内部结构——

  

  如图所示 JVM内存结构主要包括两个子系统和两个组件 两个子系统分别是Classloader子系统和Executionengine(执行引擎)子系统 两个组件分别是Runtimedataarea(运行时数据区域)组件和Nativeinterface(本地接口)组件

   Classloader子系统的作用

  根据给定的全限定名类名(如java lang Object)来装载class文件的内容到Runtimedataarea中的methodarea(方法区域) Java程序员可以extendsjava lang ClassLoader类来写自己的Classloader

   Executionengine子系统的作用

  执行classes中的指令 任何JVMspecification实现(JDK)的核心都是Executionengine 不同的JDK例如Sun的JDK和IBM的JDK好坏主要就取决于他们各自实现的Executionengine的好坏

   Nativeinterface组件

  与nativelibraries交互 是其它编程语言交互的接口 当调用native方法的时候 就进入了一个全新的并且不再受虚拟机限制的世界 所以也很容易出现JVM无法控制的nativeheapOutOfMemory

   RuntimeDataArea组件

  这就是我们常说的JVM的内存了 它主要分为五个部分——

   Heap(堆) 一个Java虚拟实例中只存在一个堆空间

   MethodArea(方法区域) 被装载的class的信息存储在Methodarea的内存中 当虚拟机装载某个类型时 它使用类装载器定位相应的class文件 然后读入这个class文件内容并把它传输到虚拟机中

   JavaStack(java的栈) 虚拟机只会直接对Javastack执行两种操作 以帧为单位的压栈或出栈

   ProgramCounter(程序计数器) 每一个线程都有它自己的PC寄存器 也是该线程启动时创建的 PC寄存器的内容总是指向下一条将被执行指令的饿地址 这里的地址可以是一个本地指针 也可以是在方法区中相对应于该方法起始指令的偏移量

   Nativemethodstack(本地方法栈) 保存native方法进入区域的地址

lishixinzhi/Article/program/Java/hx/201311/26038

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东莞市友贸实业有限公司_
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据... 点击进入详情页
本回答由东莞市友贸实业有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式