当前位置: 首页 > wzjs >正文

利用vs做网站网站建设课程

利用vs做网站,网站建设课程,网站建设推广安徽,先荐wordpress运行时数据结构 Java运行时数据区程序计数器为什么需要程序计数器执行流程虚拟机栈虚拟机栈作用虚拟机栈核心结构运行机制 Java运行时数据区 首先介绍Java运行时数据之前,我们要了解,对于计算机来说,内存是非常重要的资源,因为内…

运行时数据结构

  • Java运行时数据区
    • 程序计数器
    • 为什么需要程序计数器
    • 执行流程
    • 虚拟机栈
      • 虚拟机栈作用
      • 虚拟机栈核心结构
      • 运行机制

Java运行时数据区

首先介绍Java运行时数据之前,我们要了解,对于计算机来说,内存是非常重要的资源,因为内存是连接CPU与硬盘的桥梁,承载着操作系统与应用程序的运行的基础。JVM在运行期间把它管理的内存分为若干个区域,有些区域是线程私有的,有些区域是共享的。
Java运行时数据区作为JVM在程序执行过程中管理内存的核心结构,主要包括方法区(存储类元数据、运行时常量池、静态变量)、堆(存放对象实例和数组,被所有线程共享且是垃圾回收的主区域)、虚拟机栈(每个线程私有,用于存储方法调用的栈帧,包含局部变量表、操作数栈及方法出口)、本地方法栈(支持Native方法调用)和程序计数器(记录当前线程执行的字节码位置,确保多线程切换后能恢复执行)。其中,堆和方法区是线程共享的,而虚拟机栈、本地方法栈和程序计数器为线程私有,共同协作实现Java程序的内存分配、方法执行及多线程调度。
在这里插入图片描述

程序计数器

程序计数器(Program Counter Register)在JVM中可以当成当前线程所执行的字节码的行号指示器,在JVM的概念模型里面,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器。分支 、循环 、跳转 、异常处理 、线程恢复等都是依赖这个计数器来实现的。
在这里插入图片描述
如果程序执行的是Java方法,计数器代表的是只在执行的虚拟机字节码的地址;如果执行的是本地方法,这个计数器的值为空(undefined)。此外,这个计数器区域是Java虚拟机规范的没有规定任何内存溢出的地方,程序计数区既没有内存溢出,也没有垃圾回收。因为程序计数器是很小的一块内存区域,几乎可以忽略不记,同时也是运行最快的区域。

为什么需要程序计数器

因为CPU需要不停的切换各个线程,做完切换之后,需要知道接下来从哪里开始执行。通过使用程序计数器保存了接下来要执行的地址,这样CPU切换过来之后就可以直接接着执行。

执行流程

// 示例代码
public class Demo {public int test() {int a = 10;int b = 20;int c = a + b;String d = "abd";System.out.println(d);return d.length();}
}

通过javap -c Demo.class反编译后:

 0 bipush 102 istore_13 bipush 205 istore_26 iload_17 iload_28 iadd9 istore_3
10 ldc #2 <abd>
12 astore 4
14 getstatic #9 <java/lang/System.out : Ljava/io/PrintStream;>
17 aload 4
19 invokevirtual #15 <java/io/PrintStream.println : (Ljava/lang/String;)V>
22 aload 4
24 invokevirtual #21 <java/lang/String.length : ()I>
27 ireturn

在这里插入图片描述

虚拟机栈

虚拟机栈(Java Virtual Machine Stack)是JVM内存模型中与线程执行密切相关的核心区域,用于存储方法调用的栈帧(Stack Frame)。它是线程私有的内存空间,每个线程在创建时都会分配一个独立的虚拟机栈,其生命周期与线程一致。以下从设计目标、核心结构、运行机制到常见问题全面解析。

虚拟机栈作用

虚拟机栈的核心功能是支持Java方法的调用与执行,具体包括:

  • 方法调用链管理:保存方法的调用顺序(如 main() → methodA() → methodB())。

  • 局部变量存储:存储方法内的基本类型变量、对象引用。

  • 操作数计算:提供临时数据存储空间(如算术运算的中间结果)。

  • 方法返回控制:记录方法执行完成后的返回地址。

虚拟机栈核心结构

虚拟机栈由多个栈帧(Stack Frame)构成,每个栈帧对应一个方法的调用。栈帧包含以下核心部分:

  1. 局部变量表(Local Variables Table)
    作用:存储方法参数和方法内定义的局部变量。

     结构:以变量槽(Slot)为最小单位,每个Slot占用32位(long和double占2个Slot)。索引从0开始,依次存放this(非静态方法)、方法参数、局部变量。示例:
    
public void demo(int a, String b) {double c = 3.14;Object d = new Object();
}
局部变量表结构:

在这里插入图片描述

  1. 操作数栈(Operand Stack)

    作用:保存计算过程中的临时数据(类似CPU的寄存器)。

    特点:

     深度在编译期确定(写入方法表的max_stack属性)。通过iconst_1、iadd等字节码指令操作栈顶元素。
    
int result = 1 + 2;
iconst_1  // 压入1
iconst_2  // 压入2
iadd      // 弹出1和2,相加后压入3
istore_1  // 将3存储到局部变量表索引1
  1. 动态链接(Dynamic Linking)
  • 作用:将符号引用(如com/example/Demo.methodA)转换为直接引用(内存地址)。

  • 意义:支持多态特性(如接口方法、虚方法调用)。

  • 对比:

    • 静态解析:类加载阶段可确定的直接引用(如final方法)。

    • 动态链接:运行时才能确定(如重写方法)。

  1. 方法返回地址(Return Address)
    作用:记录方法正常结束或异常退出后的返回位置。
    两种返回方式:
  • 正常返回(return指令):程序计数器恢复为调用者的下一条指令地址。

  • 异常退出:通过异常处理器表(Exception Table)确定跳转地址。

运行机制

  1. 方法调用与栈帧压栈
    调用方法时:创建新栈帧并压入栈顶。

方法返回时:栈帧弹出,释放内存。

  1. 栈溢出(StackOverflowError)
    触发条件:线程请求的栈深度超过JVM允许的最大值(如无限递归)。

示例:

public class StackOverflowDemo {public static void main(String[] args) {infiniteCall(); // 无限递归调用}static void infiniteCall() {infiniteCall();}
}

报错信息:

Exception in thread "main" java.lang.StackOverflowError
  1. 栈大小配置
    参数:-Xss(如-Xss1m设置栈大小为1MB)。

默认值:不同JVM实现不同(HotSpot Linux x64默认1MB)。


文章转载自:

http://o3gQ7pFH.mwLxk.cn
http://iub2JpAp.mwLxk.cn
http://2FmF2Rb6.mwLxk.cn
http://pylS0LI8.mwLxk.cn
http://N1rh4LMR.mwLxk.cn
http://YCAmQ8Yq.mwLxk.cn
http://vrL4SRWe.mwLxk.cn
http://7XVUZEJP.mwLxk.cn
http://5E50a9JG.mwLxk.cn
http://N2EEWORr.mwLxk.cn
http://eYYWfk28.mwLxk.cn
http://uCCHGvOr.mwLxk.cn
http://Bjcjp4Bn.mwLxk.cn
http://nBgqCXUt.mwLxk.cn
http://1E2evsu0.mwLxk.cn
http://k60gVrhn.mwLxk.cn
http://pePffIk5.mwLxk.cn
http://kMqVg3AK.mwLxk.cn
http://EeVa2m1b.mwLxk.cn
http://5WXID9Fw.mwLxk.cn
http://KYjv8XJ8.mwLxk.cn
http://0UH6ZXNF.mwLxk.cn
http://SvfnVm6i.mwLxk.cn
http://6VaiaqEw.mwLxk.cn
http://qKS1zeRO.mwLxk.cn
http://Zx0SJAYm.mwLxk.cn
http://FEH0LRUc.mwLxk.cn
http://ZbAnfCjq.mwLxk.cn
http://b25eROtI.mwLxk.cn
http://epbxfeVC.mwLxk.cn
http://www.dtcms.com/wzjs/747357.html

相关文章:

  • 不懂编程如何做网站网站建设的人员预期
  • 做网站 需要 域名 空间网站演示程序
  • 房子装修网站医学分类手机网站模版
  • 个性化网站模板昭通商城网站建设
  • 百度安装app下载免费湖南网站seo营销
  • 国际网站建设做网站的图片大全
  • asp 网站运行在线商城系统平台
  • 做网站注意哪些室内设计学校全国排名
  • 电子及商务网站建设报告桂林北站改造
  • 海外购物网站哪个最好黄冈网站推广在线
  • 做任务网站排行榜wordpress 地址设置方法
  • 管局备案网站古风ppt模板免费下载
  • 网站建设冷色调开发小程序费用一览表
  • 规划建立一个网站 项目wordpress指定上传目录
  • 怎样建设一个韩国网站南京seo关键词优化预订
  • 济源城乡建设局网站网站开发2019
  • 开通网站的请示网站怎么进行网络推广
  • 无忧网站建设更改wordpress程序站点网址
  • 建设部考试中心网站北京楼市暴跌
  • 2013电子商务网站建设考试试卷厦门seo网站排名优化
  • 漫画网站开发辽源商城网站建设
  • 延安网站设计河北公司网站开发
  • 泰安网络营销优化关键词技巧
  • 各大公司开源网站做网站交钱后以后还要教吗
  • 企业为什么做网站wordpress修改背景
  • 网站图怎么做会高清图片wordpress双语言设置
  • 找私人做网站江西城乡建设培训中心网站
  • 优秀网站模板欣赏怎样购买网站
  • 营销型网站建设与网页设计淮南58同城网
  • 彩票网站开发风险免费字体设计图片