返回顶部
首页 > 资讯 > 精选 >JVM中的returnAddress过程是什么
  • 412
分享到

JVM中的returnAddress过程是什么

2023-06-30 11:06:46 412人浏览 泡泡鱼
摘要

本篇内容主要讲解“JVM中的returnAddress过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JVM中的returnAddress过程是什么”吧!JVM是虚拟机,也是一种规范,他

本篇内容主要讲解“JVM中的returnAddress过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JVM中的returnAddress过程是什么”吧!

JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理。冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储 程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作的数的数字类型,地址码则指出地址码和 操作数。从dos到window8,从unix到ubuntuCentos,还有Mac OS等等,不同的操作系统指令集以及数据结构都有着差异,而JVM通过在操作系统上建立虚拟机,自己定义出来的一套统一的数据结构和操作指令,把同一套语 言翻译给各大主流的操作系统,实现了跨平台运行,可以说JVM是java的核心,是java可以一次编译到处运行的本质所在。

数据类型

在 JVM 中,数据分为两大类:primitive types (原生类型)和 reference types(引用类型)。

引用类型,让 JVM 能更好的支持于面向对象语言的设计,引用类型的值用来指向内存中分配的类实例或者数组。JVM 规范中并没有详细规定引用类型的实现细节,比如引用应该通过何种方式去定位、访问堆中的对象,具体的对象访问方式取决于虚拟机的具体实现,比如 HotSpot 有其自己的实现方案。

目前主流的访问方式有使用句柄和直接指针两种:

JVM中的returnAddress过程是什么

JVM中的returnAddress过程是什么

其中使用直接指针访问的方式,类似于 c++ 中的虚表(虚表就是指向对象类型数据的指针)。这两种对象访问方式各有优劣,使用句柄访问的最大好处就是 reference 中存储的是稳定的句柄地址,在对象被移动(比如垃圾回收时,整理内存空间,会移动对象的存储位置)时只会改变句柄中示例数据的指针,而 reference 本身不需要修改。

使用直接指针访问的最大好处就是速度更快,节省了一次内存寻址的时间开销。

原生数据类型包括:numeric types, boolean type, returnAddress type。其中 returnAddress 数据只存在于字节码层面,与编程语言无关,也就是说,我们在 Java 语言中是不会直接与 returnAddress 类型的数据打交道的。

returnAddress 类型的值是指向字节码的指针,不管是物理机还是虚拟机,运行时内存中的数据总归可分为两类:代码,数据。对于冯诺依曼结构的计算机,指令数据和数值数据都存储在内存中,而哈弗结构的计算机,将程序指令与数据分开存储。

对于 JVM 来说,程序就是存储在方法区的字节码指令,而 returnAddress 类型的值就是指向特定指令内存地址的指针。

JVM支持多线程,每个线程有自己的程序计数器(pc reGISter),而 pc 中的值就是当前指令所在的内存地址,即 returnAddress 类型的数据,当线程执行 native 方法时,pc 中的值为 undefined。

JVM中的returnAddress过程是什么

栈帧

栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,栈帧中存储了方法的局部变量表,操作数栈,动态连接,和方法返回地址等信息。在程序编译时,栈帧中需要多大的局部变量表,多深的操作数栈都已经完全确定了,并且写在方法表的 Code 属性中。

JVM中的returnAddress过程是什么

当一个方法开始执行后,只有两种方式可以退出,第一种方式是执行引擎遇到任意一个方法返回的字节码指令,这种方式称为正常完成出口;另外一种退出方式是,在方法执行过程中遇到异常,且该异常没有被被捕获,称为异常完成出口。

无论是哪种退出方式,在方法退出后,都需要返回到该方法被调用的位置(地址),让程序继续执行。一般来说,方法执行前,会保存调用者当前的 PC 计数器中的值,当方法正常退出时,将该 PC 计数器的值会作为返回地址,返回给调用者。在方法异常退出时,返回地址是通过异常处理器表来确定的。

方法退出的过程实际上就等于把当前栈帧出栈,一般过程为:

  • 恢复上层方法的局部变量表和操作数栈

  • 把返回值压入调用者栈帧的操作数栈中

  • 调整 PC 计数器的值,以指向方法调用指令后面的一条指令

到此,相信大家对“JVM中的returnAddress过程是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: JVM中的returnAddress过程是什么

本文链接: https://lsjlt.com/news/328421.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JVM中的returnAddress过程是什么
    本篇内容主要讲解“JVM中的returnAddress过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JVM中的returnAddress过程是什么”吧!JVM是虚拟机,也是一种规范,他...
    99+
    2023-06-30
  • JVM 中的 returnAddress过程详解
    目录数据类型栈帧JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理。冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储...
    99+
    2024-04-02
  • Java中jvm的执行过程是什么
    这期内容当中小编将会给大家带来有关Java中jvm的执行过程是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2....
    99+
    2023-06-14
  • JVM类加载过程是怎样的
    小编给大家分享一下JVM类加载过程是怎样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机...
    99+
    2023-06-02
  • 什么是JVM
    一、什么是JVM Java虚拟机(JVM)是一个全面的信息处理和分析系统,是一个集成了各种Java技术和工具的系统平台,能够运行Java字节码,从而为Java程序提供一个运行环境。Java虚拟机通常包括类装载器、运行时数据区、执行引擎...
    99+
    2023-10-29
    JVM
  • JVM类加载机制过程以及原理是什么
    这篇文章主要介绍“JVM类加载机制过程以及原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JVM类加载机制过程以及原理是什么”文章能帮助大家解决问题。一、做一个小测试通过注释,标注出下面两个...
    99+
    2023-07-05
  • JVM中的Ljava.lang.Object是什么意思
    JVM中的Ljava.lang.Object表示Java中所有类的基类,即所有类都直接或间接继承自Object类。Object类定义...
    99+
    2023-10-20
    JVM
  • JVM中Class文件的加载过程
    这篇文章主要讲解了“JVM中Class文件的加载过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM中Class文件的加载过程”吧!Class文件加载过程JVM加载Class文件主要分3...
    99+
    2023-06-16
  • jvm中jmap -dump的用法是什么
    jmap命令用于生成Java堆转储快照。在JVM中,可以使用jmap命令生成Java进程的堆内存转储文件(heap dump),以便...
    99+
    2024-03-05
    jvm
  • jvm中jmap -dump的作用是什么
    jmap -dump命令用于生成Java应用程序的堆转储文件。堆转储文件包含了Java应用程序的内存信息,包括所有对象的状态和内容。...
    99+
    2024-03-05
    jvm
  • JVM的含义是什么
    这篇文章主要介绍“JVM的含义是什么”,在日常操作中,相信很多人在JVM的含义是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM的含义是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!JVM是什...
    99+
    2023-06-17
  • java中jvm的工作机制是什么
    Java虚拟机(JVM)是一个用于执行Java字节码的虚拟机。它是Java平台的核心部分,负责将Java字节码转换为机器代码并执行。...
    99+
    2023-09-26
    java jvm
  • java在jvm上的执行流程是什么
    Java在JVM上的执行流程如下:1. 编写Java源代码:首先,开发人员使用Java编程语言编写Java源代码。Java源代码是以...
    99+
    2023-09-26
    java jvm
  • MySQL中的存储过程是什么
    MySQL中的存储过程是一段预先编译好的SQL代码块,它可以在需要的时候被调用执行。存储过程通常用于封装一系列SQL语句,以实现特定...
    99+
    2023-08-15
    MySQL
  • PostgreSQL中的存储过程是什么
    存储过程是一组预编译的SQL语句和逻辑操作,通过一个命名的过程存储在数据库服务器中,用于执行特定的任务或操作。存储过程可以接受输入参...
    99+
    2024-04-09
    PostgreSQL
  • SQLServer中的存储过程是什么
    存储过程是一组预编译的SQL语句集合,可被存储在数据库服务器上,以便在需要时调用执行。存储过程可以接受输入参数,并返回结果,它们可以...
    99+
    2024-04-09
    SQLServer
  • 什么是SQLServer中的存储过程
    在SQLServer中,存储过程是一组SQL语句的集合,可以被存储在数据库中并重复使用。存储过程可以包括数据查询、数据操作、流程控制...
    99+
    2024-04-09
    SQLServer
  • MariaDB中的存储过程是什么
    MariaDB中的存储过程是一组预编译的SQL语句,可以在数据库中存储并重复使用。存储过程允许用户定义自己的函数和过程,以便在数据库...
    99+
    2024-04-02
  • Oracle中的存储过程是什么
    Oracle中的存储过程是一组预编译的SQL语句和PL/SQL代码,可以接受输入参数、执行特定任务,并返回结果。存储过程可以在数据库...
    99+
    2024-04-09
    Oracle
  • jvm的SystemGC原理是什么
    这篇文章主要介绍了jvm的SystemGC原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jvm的SystemGC原理是什么文章都会有所收获,下面我们一起来看看吧。概述JVM的GC一般情况下是JVM本身...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作