【深入理解JVM】JVM5
JVM内部结构
栈
只要一个线程在运行,JVM就会在栈中开辟一个空间。
栈帧:当线程中有方法在运行时,栈就会开辟一片内存空间,存放相关信息,这片区域就是栈帧。 例如运行main方法。栈帧时遵循先进后出原则(FILO)。
栈帧内部结构:局部变量表、操作数栈、动态链接、方法出口
局部变量表:
定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress类型。
由于局部变量表是建立在线程的栈上,是线程的私有数据,因此不存在数据安全问题。
局部变量表所需容量大小是在编译期确定下来的,并保存在方法的Code属性的maxumum local variables数据项中。在方法运行期间是不会改变局部变量表的大小的。
局部变量表中的变量只在当前方法调用中有效。在方法执行时,虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后,随着方法栈帧的销毁,局部变量表也会随之销毁。
操作数栈:
局部变量表和操作数栈的关系:(以int a =1为例)
JVM会先将常量1赋值到操作数栈中,然后在局部变量表中定义一个变量a,最后将常量1从操作数栈出栈,放到a的对应的操作空间中去。
动态链接:
例如有个compute方法在执行,而compute方法则在方法区里执行,动态链接保存了该方法在方法区里面的入口地址。
方法出口
还是compute方法为例,调用compute方法时会当时的现场位置保存到方法出口中,当compute方法调用完后,会根据方法出口中的位置,执行compute之后的内容。
方法区(元空间):
方法区里面保存了常量、静态变量和类信息(类加载的一些信息)
本地方法栈:
本地方法:native修饰的方法,底层是c++实现的。
如果调用了本地方法,就会在本地方法栈中开辟空间。
【深入理解JVM】JVM5相关推荐
- Java快速创建大量对象_3分钟 快速理解JVM创建对象的步骤!
原标题:3分钟 快速理解JVM创建对象的步骤! 我们平时创建一个对象只需要new.然而我们知道对象的创建到底经历了哪些呢?实际上只不过仅仅的3步就完成了.先来看看完整的创建过程,再来一步一步的分析. ...
- java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...
- [译]深入理解JVM
深入理解JVM 原文链接:http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals 每个使用Java的开发者都知道Java ...
- 深入理解JVM(一)编译openJDK
此文总结的很不错:https://www.cnblogs.com/ACFLOOD/p/5528035.html 准备openJDK源码和环境 1.在linux和macOS上编译openJDK更加友好, ...
- 深入理解JVM文章合集
原文地址:http://ddrv.cn/a/88331 Java动态追踪技术探究 在Java虚拟机中,字符串常量到底存放在哪 一次生产 CPU 100% 排查优化实践 聊聊 Java 虚拟机:类的加载 ...
- 深入理解JVM(2)——GC算法与内存分配策略
说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Sca ...
- java 句柄池_深入理解JVM之Java对象的创建、内存布局、访问定位详解
本文实例讲述了深入理解JVM之Java对象的创建.内存布局.访问定位.分享给大家供大家参考,具体如下: 对象的创建 一个简单的创建对象语句Clazz instance = new Clazz();包含 ...
- 一文带你深入理解JVM内存模型
一文带你深入理解JVM内存模型 一.JAVA的并发模型 共享内存模型 在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信 该内存指的是主内存,实际上是物 ...
- 一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图)值得收藏!!!
受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话:"八小时内谋生活,八小时外谋发展. ...
- 深入理解 JVM Class文件格式(十)
到此, 所有关于class文件格式的重要内容都已经讲解完了, 不敢说面面俱到, 但是敢说大部分重要的内容都包含在内了.前前后后用了9篇博客来专门讲解class文件结构, 为什么花那么多的时间和精力来介 ...
最新文章
- boost 线程、互斥体、条件变量
- windows环境下,django + mongoengine + mongodb环境配置
- 查看 Android SDK Build-tools 版本号
- sql输出带颜色的字段_表输出步骤详解
- 《数据库系统实训》实验报告——系统安装与数据库搭建
- 永恒之塔修改服务器,[搬运工]永恒之塔单机版7.8 德国最新服务端
- Each interface on the back of the fuselage
- linux下安装和使用vnc
- JavaAPI在线帮助文档
- 分享:绘图不可不知的CAD经典技巧
- 计算机无法进入pe系统,u盘启动盘无法进入pe解决方法
- 如何免费申请js.org二级域名
- 向量的加减法与内外积
- 用博奥如何导入单项工程电子表_博奥工程系列软件实操手册第六册.doc
- 2022年10月 使用win11系统自带远程桌面,远程控制VMware虚拟机系统
- php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识
度量声音强度,大 - phpStudy...
- windows清理8080端口
- 笔记本电脑如何选购并安装内存条
- 51nod 1431 快乐排队
- WLAN(Wireless Local Area Network)——无线局域网
热门文章
- Springboot毕设项目学科竞赛推荐平台z7z28java+VUE+Mybatis+Maven+Mysql+sprnig)
- 服务器系统如何校验md5值,怎么验证md5-NTP的MD5加密
- 机房收费系统---报表
- 解决java.lang.ClassNotFoundException: org.apache.axis2
- Yii框架实现伪静态
- 绩效跃升地图读书笔记20130618
- phpMyAdmin 配置文件权限错误,不应任何用户都能修改 mac
- 除了学习PHP,还应该学什么?
- 不用软件直接查询QQ好友的IP地址(一)
- 消息队列超详解(以RabbitMQ和Kafka为例,为何使用消息队列、优缺点、高可用性、问题解决)