ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

最简单易懂的JVM(虚拟机)的结构

2019-02-26 10:54:14  阅读:241  来源: 互联网

标签:虚拟机 计数器 线程 内存 JVM 易懂 方法 栈帧


  最简单易懂的JVM(虚拟机)的结构

一、结构

1.类加载器: 虚拟机启动(或者类运行)的时候将Java源文件加载到虚拟机中。
2.执行引擎:类文件加载到虚拟机之后会变成字节码(程序执行的指令)
3.内存区:程序执行的时候所用的空间;(可理解为生产厂房)

内存区划分:
a.方法区:存放程序中类的结构信息、常量池、静态变 量、构造函数。(公用的不会变的东西都放在这里,相当于公司 的规章制度,不会变的,定好的东西,和公司的一些工具,大 家通用的。)
b.堆内存:供给大家存放java实例或者对象的地方。跟方法 区一样都是共享的。
c.栈内存:线程运行产生的区域,每个线程执行都需要创建 一个栈内存区。(每个线程可能会执行几个Java方法,没个方法又会去创建一个栈帧,栈帧又是用来存放方法的信息供方法使用的。栈帧和栈的关系是父子关系(栈是父,栈帧是子))
d.程序计数器:每个线程执行的时候都会生成一个计数器,用来记录该线程执行到什么地方了,执行的情况。比如说执行到某地方停了什么时候再继续执行,都是由程序计数器去管理的。程序计数器也属于线程的。
e. 本地方法栈(Native Method Stack):和java栈的作用差不多,只不过是为JVM使用到的native方法服务的。

4.本地方法接口:主要是调用C或C++实现的本地方法及返回结果。

以上内容纯属个人理解。参考:https://blog.csdn.net/moneyshi/article/details/53033577

标签:虚拟机,计数器,线程,内存,JVM,易懂,方法,栈帧
来源: https://blog.csdn.net/qq_42337440/article/details/87930664

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有