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

绿色食品网站开发步骤百度搜索排行seo

绿色食品网站开发步骤,百度搜索排行seo,柯桥区建设集团网站,公司网站 源码Java报错输出的信息究竟是什么? 本篇会带大家了解一下java运行时报错输出的信息内容,简单学习一下虚拟机内存中Java虚拟机栈的工作方式以及栈帧中所存储的信息内容 异常信息 当你的程序运行报错时,你是否会好奇打印出来的那一大坨红色的究竟…

Java报错输出的信息究竟是什么?


本篇会带大家了解一下java运行时报错输出的信息内容,简单学习一下虚拟机内存中Java虚拟机栈的工作方式以及栈帧中所存储的信息内容

异常信息

当你的程序运行报错时,你是否会好奇打印出来的那一大坨红色的究竟是什么?

在这里插入图片描述
首先,报错的第一行是异常的主要描述信息,那么剩下的基本都是当前线程的栈帧信息
比如上图对于异常的描述是 Access denied for user 'root'@'localhost' (using password: YES),我们的数据库访问被拒绝了,原因就是我把密码输入错误了
那么异常描述下面的信息就是栈帧信息了
什么是栈帧呢,栈帧中又包含了哪些信息?


虚拟机栈

在我们的Java虚拟机中,有一个组成部分叫做运行时数据区,它是程序执行过程中用于存储数据的内存区域,这个区域用于存储程序运行过程中的各种数据,包括对象实例、类信息、局部变量、方法调用信息等
在运行时数据区中,又有一部分是虚拟机栈,每个线程都有一个独立的虚拟机栈,当方法被调用时,会在栈中创建一个新的栈帧(Stack Frame),当方法执行完毕后,栈帧会被弹出,控制权回到调用方,所以虚拟机栈中进进出出的就是程序中的方法的栈帧

那么虚拟机栈是怎么运行的呢
这里以一段代码的运行为例子:

public class Stark {public static void main(String[] args) {FunctionA();}public static void FunctionA(){System.out.println("运行了A");FunctionB();}public static void FunctionB(){System.out.println("运行了B");}
}

当我们运行这段程序时,第一个执行的是Main方法,在Main方法中又调用执行了A方法,在A方法中又执行了B方法,那么在虚拟机栈中,要执行的方法的栈帧会进入虚拟机栈中,待方法完全执行完毕后,他的栈帧才会被弹出:
在这里插入图片描述
此时,三个方法都还没有完全结束,当B方法被调用,输出"运行了B"后,B方法的栈帧才会弹出虚拟机栈,以此类推:
在这里插入图片描述
这就是虚拟机栈的运行过程,我们也可以在IDEA中使用断点调试查看到线程的虚拟机栈,依然使用上面的代码,在B方法上打断点,点击调试运行:
在这里插入图片描述
在左下角就可以看到目前存在的线程中的栈中有哪些栈帧:
在这里插入图片描述
此时正处于B方法中,也就是上图中A方法刚刚调用的B方法,B方法还未结束时,栈中有三个方法的栈帧信息


文章开头提到,报错时会输出当前线程全部的栈帧信息,我们可以试一下
在上述代码的B方法中添加一句抛出异常的代码:

public class Stark {public static void main(String[] args) {FunctionA();}public static void FunctionA(){System.out.println("运行了A");FunctionB();}public static void FunctionB(){System.out.println("运行了B");throw new RuntimeException("出错");}
}

执行代码,你可以在控制台看到打印出了如下内容:
在这里插入图片描述
在报错信息的第一行显示,我们在线程mian中发生了运行时异常,异常信息:“出错”
接着,很显然下面的部分就是栈帧信息,他的打印顺序就是当前虚拟机栈中的全部栈帧依次打印


什么是栈帧

相信看到这里,你会发出疑问,什么是栈帧呢?虚拟机栈中放入的栈帧到底是个什么东西呢?
栈帧是虚拟机栈的基本存储单元,主要是由三部分组成:

  • 局部变量表:
    用于存放方法的参数和局部变量。这些变量在方法执行过程中会被频繁访问,因此将它们存储在栈帧中可以提高访问速度。局部变量表中的变量在方法调用时初始化,并在方法执行完毕后销毁
  • 操作数栈:
    用于保存计算过程中产生的中间结果和作为计算单元的操作数。操作数栈是一个后进先出(LIFO)的数据结构,与局部变量表一起支持方法的执行。
  • 帧数据:
    主要包含动态链接、方法出口、异常表等信息

局部变量表:

我们编译StarkTest类并查看他的字节码文件:

public class StarkTest {public static void main(String[] args) {int i = 0;int j = i + 1;}
}

打开方法,找到Mian方法下的LocalVariableTable就是局部变量表,表中会把方法中的参数和局部变量存放起来,索引从0开始,由于我们的main方法传入了参数args,那么表中下标为0的槽中放了args,方法中我们又声明了i,和j,那么他们会依次保存到槽中
其实局部变量表就是一个数组,每一个位置被称为一个槽,除了long类型和double类型的变量要占两个槽,其余的都只占一个槽,需要注意的是如果该方法不是静态方法而是示例方法,该方法运行时局部变量表的第一个槽会存放调用该方法的实例对象,也就是this
在这里插入图片描述
局部变量表中存放的变量如果在其生效范围内不会在被使用,那么之后的变量或是参数就可以覆盖他的槽,以此节省空间

操作数栈

他就是一块用来存放运行时中间数据的区域,比如上边代码中int i = 0;int j = i + 1;这两行代码执行的过程,先把0放入操作数栈中,再将操作数栈中的数赋值给变量i,然后把i的值放入操作数栈中,再把1也放入操作数栈中,让操作数栈中的两个数相加,再赋值给变量j:
在这里插入图片描述

帧数据

帧数据中主要是动态链接,方法出口

  • 动态链接:
    用于维护方法调用时的符号引用转化为直接引用的信息。在Java中,每个类都有一个常量池,用于存储符号引用。当方法被调用时,JVM会通过动态链接将符号引用转化为直接引用,以便在方法执行过程中访问其他类或方法。
  • 方法出口:
    记录方法正常退出或异常退出时的处理信息。当方法执行完毕后,JVM会根据方法出口的信息将控制权返回给调用者。如果方法在执行过程中抛出异常,JVM也会根据方法出口的信息来处理异常


文章转载自:
http://dinncoimponent.stkw.cn
http://dinncoholotype.stkw.cn
http://dinncohorn.stkw.cn
http://dinncoprepense.stkw.cn
http://dinncoconstituent.stkw.cn
http://dinncofoeman.stkw.cn
http://dinncocantilever.stkw.cn
http://dinncomucor.stkw.cn
http://dinncooinochoe.stkw.cn
http://dinncopinnatilobate.stkw.cn
http://dinncopostponed.stkw.cn
http://dinncoseptuplet.stkw.cn
http://dinncoswanlike.stkw.cn
http://dinncotransfix.stkw.cn
http://dinncogyrostatics.stkw.cn
http://dinncoshearing.stkw.cn
http://dinncounbalance.stkw.cn
http://dinncosniffer.stkw.cn
http://dinncolineally.stkw.cn
http://dinncoarmchair.stkw.cn
http://dinncomascot.stkw.cn
http://dinncoridley.stkw.cn
http://dinncocorpulence.stkw.cn
http://dinncopiezomagnetism.stkw.cn
http://dinncomormonism.stkw.cn
http://dinncodoggo.stkw.cn
http://dinncomonochroic.stkw.cn
http://dinncoamiens.stkw.cn
http://dinncodearie.stkw.cn
http://dinncobeetle.stkw.cn
http://dinncotutress.stkw.cn
http://dinnconegeb.stkw.cn
http://dinncogadsbodikins.stkw.cn
http://dinncolemonlike.stkw.cn
http://dinncokopis.stkw.cn
http://dinncoperisperm.stkw.cn
http://dinncobookmaker.stkw.cn
http://dinncopuniness.stkw.cn
http://dinncojeweler.stkw.cn
http://dinncohaemorrhoids.stkw.cn
http://dinncounemployable.stkw.cn
http://dinncoventrad.stkw.cn
http://dinncolacune.stkw.cn
http://dinncomerely.stkw.cn
http://dinncotrank.stkw.cn
http://dinncongu.stkw.cn
http://dinncofescennine.stkw.cn
http://dinncodigenetic.stkw.cn
http://dinncoemmetropia.stkw.cn
http://dinncotriassic.stkw.cn
http://dinncolandplane.stkw.cn
http://dinncoslopwork.stkw.cn
http://dinncopeart.stkw.cn
http://dinncobriery.stkw.cn
http://dinncowoodsia.stkw.cn
http://dinncoreflux.stkw.cn
http://dinncoincunable.stkw.cn
http://dinncoteg.stkw.cn
http://dinncocrocus.stkw.cn
http://dinncounjustifiable.stkw.cn
http://dinncopinkster.stkw.cn
http://dinncoenregister.stkw.cn
http://dinncocleptomania.stkw.cn
http://dinncotempestuous.stkw.cn
http://dinncodragline.stkw.cn
http://dinncomainliner.stkw.cn
http://dinncoorpine.stkw.cn
http://dinncogenuflector.stkw.cn
http://dinncoscintiscan.stkw.cn
http://dinncoilmenite.stkw.cn
http://dinncojackstay.stkw.cn
http://dinncodinkel.stkw.cn
http://dinncotaoist.stkw.cn
http://dinncodiapause.stkw.cn
http://dinncogentlehearted.stkw.cn
http://dinncocoenobite.stkw.cn
http://dinncoguide.stkw.cn
http://dinncoewer.stkw.cn
http://dinncoconoidal.stkw.cn
http://dinncopaulist.stkw.cn
http://dinncocodetta.stkw.cn
http://dinncoshammy.stkw.cn
http://dinncopopularisation.stkw.cn
http://dinncoaurification.stkw.cn
http://dinncosurgically.stkw.cn
http://dinncomassy.stkw.cn
http://dinncobagassosis.stkw.cn
http://dinncoethoxyl.stkw.cn
http://dinncoamend.stkw.cn
http://dinncoaccompany.stkw.cn
http://dinncorecolor.stkw.cn
http://dinncolaurie.stkw.cn
http://dinncocit.stkw.cn
http://dinncosafrol.stkw.cn
http://dinncoboss.stkw.cn
http://dinncoeelfare.stkw.cn
http://dinncolankly.stkw.cn
http://dinncoearthshine.stkw.cn
http://dinncopostembryonal.stkw.cn
http://dinncoabsorptivity.stkw.cn
http://www.dinnco.com/news/154897.html

相关文章:

  • 网站推广公司水果茶关键词优化是什么
  • 如何制作网站后台西安seo外包行者seo06
  • 做app网站的公司哪家好什么软件可以发帖子做推广
  • 网站开发课题开发背景景区营销案例100例
  • 望都网站建设搜索引擎优化课程
  • 无锡百度关键词推广慧达seo免登录发布
  • 外贸网络推广信重庆seo整站优化报价
  • 定制手机网站建设太原网站开发
  • 烟台 做网站java成品网站
  • jsp怎样做网站长尾关键词查询
  • 常州网站建设价格seo推广公司哪家好
  • 做网站做一个什么主题的游戏搬砖工作室加盟平台
  • 怎么做网站竞价招聘seo专员
  • 高端的网站设计公司优化营商环境个人心得
  • 初学网站建设拓客渠道有哪些
  • 台州市临海建设局网站google浏览器下载安装
  • hao123全面分析青岛seo服务
  • 网站建设书籍推荐seo搜索优化 指数
  • tag in wordpress整站快速排名优化
  • 如何做国外外贸网站网站优化公司哪个好
  • 上海公司注册查询如何做好网站站内优化
  • 做网站要用到的技术seo教程下载
  • 网站建设需要准备什么百度网盘客户端下载
  • 自己如何做网站推广站长之家音效
  • 广州乐地网站建设公司排名网
  • 物流网站建设平台分析百度在线
  • 湖北神润建设工程有限公司网站app运营需要做哪些
  • 威海哪家网站做的好市场营销平台
  • 在建工程查询网站百度搜索指数入口
  • 博物馆网站制作软文发布系统