JVM学习(一)非线程共享-运行时数据区域

本文深入探讨了JVM运行时数据区的关键概念,包括程序计数器、虚拟机栈、栈帧、本地方法栈等核心组件的功能与作用。详细解析了线程隔离与线程共享内存区域的特点,以及可能引发的OutOfMemoryError和StackOverflowError异常。

  那么没有错,我码仔也要开始周志明的JVM之路,整本书模块很多,只取需要的部分进行学习,如果其中有什么错误的理解,请各位指出,让我能认识到不足的地方,谢谢。
Tip: 始终追寻第一遍是记忆,第二遍是修改,第三遍是回顾加修改

JVM运行时数据区

本部分采用是否线程隔离/线程共享来描述这个数据区可能会比较切实点。
当然也有切分成数据流与指令流来描述,如下
在这里插入图片描述

但是我采用的是这个↓
在这里插入图片描述


一、程序计数器(Program Counter Register)

简略: 用于指定当前字节码解析行号的指示器(在挂起的时候记录运行的行号、地址,唤醒时恢复执行到的行号、地址)

  根据多线程的CUP时间片分配机制,我们可以了解到,同一时间一个处理器只会执行一个条线程中的指令
  同时以防线程间切换CPU后不能恢复到原来的位置,因此每条线程都需要一个独立的程序计数器,属于线程隔离(线程私有的内存)。

tips:唯一一个虚拟机规范中没有规定OutOfMemoryError\color{red}{OutOfMemoryError}OutOfMemoryError情况的内存区域


二、虚拟机栈

也归属线程私有,存储当前线程运行方法所需数据、地址及指令

这里提点到一个词:栈帧(Stack Frame)

  文字描述可能比较枯燥:这里以方法Helloworld为例子
(每一个方法从调用直到执行完成的过程,对应着一个栈帧在虚拟机中从入栈到出站的过程)

在这里插入图片描述

局部变量表与操作数栈

参考方法用于展示

public class hi{
	public static int fine(int i){
		int c = i;
		return c++;
	}
}

在这里插入图片描述

上述过程:
0 - 传入变量压入到操作数栈
1 - 弹出栈顶元素,存放到局部变量第一个位置
2 - 将局部变量第一个加载到操作数栈
3 - 栈顶局部变量做自增操作
6 - 从当前方法返回int

操作数栈与局部变量(基本类型)的操作:
①将一个局部变量加载到操纵栈的指令包括:iload_、lload…

②将一个数值从操作数栈存储到局部变量表的指令包括:istore_、lstore…
(这里说到了指令集的方法,也是另一种说归属于指令流划分的原因)

如果是引用对象: 会指向Heap(堆)

一个局部变量表的单位:占用32位的存储空间(一个存储单位称之为slot,槽),long和double需要2个连续的局部变量单位

动态连接

类似一个接口,实现它的方法,是要动态找它的实现类,并获取其中要执行的方法,这也属于动态链接的一个部分

tip: 本内存区域允许异常:


1、线程方法请求栈深度超过虚拟机所允许深度(通常类递归会出现),则会抛出StackOverflowError\color{red}{StackOverflowError}StackOverflowError异常


2、如果虚拟机栈动态拓展(通常两种方式:Segmented stack和Stack copying),如果拓展的时候无法申请到足够的内存,则会抛出异常OutOfMemoryError\color{red}{OutOfMemoryError}OutOfMemoryError

本地方法栈

与虚拟机栈发挥作用相似,具体实现交由虚拟机实现,不限制语言不拓展这个方向,不是主要关心的内容,暂时来讲

源码地址: https://pan.quark.cn/s/a4b39357ea24 欧姆龙触摸屏编程软件MPTST 5.02是专门为欧姆龙品牌的工业触摸屏而研发的编程解决方案,它赋予用户在直观界面上构建、修改以及排错触摸屏应用程序的能力。 该软件在工业自动化领域具有不可替代的地位,特别是在生产线监视、设备操控以及人机互动系统中发挥着核心作用。 欧姆龙MPTST(Machine Process Terminal Software Touch)5.02版本配备了多样化的功能,旨在应对不同种类的触摸屏项目要求。 以下列举了若干核心特性:1. **图形化编程**:MPTST 5.02采用图形化的编程模式,允许用户借助拖拽动作来设计屏幕布局,设定按钮、滑块、指示灯等组件,显著简化了编程流程,并提升了工作效率。 2. **兼容性**:该软件能够适配欧姆龙的多个触摸屏产品线,包括CX-One、NS系列、NJ/NX系列等,使用户可以在同个平台上完成对不同硬件的编程任务。 3. **数据通信**:MPTST 5.02具备与PLC(可编程逻辑控制器)进行数据交互的能力,通过将触摸屏作为操作界面,实现生产数据的显示与输入,以及设备状态的监控。 4. **报警与事件管理**:软件中集成了报警和事件管理机制,可以设定多种报警标准,旦达到预设条件,触摸屏便会展示对应的报警提示,助力操作人员迅速做出响应。 5. **模拟测试**:在设备实际连接之前,MPTST 5.02支持用户进行脱机模拟测试,以此验证程序的正确性与稳定性。 6. **项目备份与恢复**:为了防止数据遗失,MPTST 5.02提供了项目文件的备份及还原功能,对于多版本控制与团队协作具有显著价值。 7. **多语言支持**:针对全球化的应...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值