Java虚拟机JVM-面试题
1、Java 虚拟机是如何捕获异常的?
答:
在编译生成的字节码中,每个方法都附带一个异常表。异常表中的每一个条目代表一个异常处理器,并且由 from 指针、to 指针、target 指针以及所捕获的异常类型构成。这些指针的值是字节码索引(bytecode index,bci),用以定位字节码。
其中,from 指针和 to 指针标示了该异常处理器所监控的范围,例如 try 代码块所覆盖的范围。target 指针则指向异常处理器的起始位置,例如 catch 代码块的起始位置。
当异常发生时,JVM会去遍历异常表中的所有条目,如果发现异常发生的位置在某个条目的from-to的范围内,那么就会对比抛出的异常和捕获的异常是否一致。如果一致跳转到target指针指向的异常处理器的起始位置执行。一旦该方法的异常表没有找到,则会在弹出该方法对应的栈帧,对调用该方法的方法执行同样的处理。
最坏的情况就是遍历整个线程栈也没有匹配的异常。
2、为什么finally总会被执行?
(1)通过Code对应字节码内容,可以看出,finally代码块在各种可能得分支下都复制了1份(冗余设计),不出异常的情况,总是会被执行到;
(2)从异常表中可以得出,出现异常,先跳转到catch里执行,catch执行完后,在跳转到finally里执行。所以 finally总是会被执行。
举例:
首先从异常表中可以看出,0~4(不包括4)范围内发生异常则立即跳转到7位置处理异常;另外0 ~4(try块)范围无论发生异常,必须转向15的位置执行finally块中的代码;另外7 ~12(catch块)范围内无论是否发生异常,也必须转向15的位置执行finally块。
3、请简述JVM运行时数据区的组成结构及各部分作用?
相关文章:
Java虚拟机JVM-面试题
1、Java 虚拟机是如何捕获异常的? 答: 在编译生成的字节码中,每个方法都附带一个异常表。异常表中的每一个条目代表一个异常处理器,并且由 from 指针、to 指针、target 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...
详细的说说Redis的数据类型
Redis是一个开源的内存数据库,它可以用作缓存、消息代理、实时数据处理和许多其他用途。Redis是一个key-value存储系统,其中数据存储在内存中,并通过网络进行访问。与传统的关系型数据库不同,Redis支持多种数据结构,包…...
798.差分矩阵
输入一个 n行 m列的整数矩阵,再输入 q个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。 请你将进行完所有操作后的矩阵输出…...
InfluxDB 2 介绍与使用 flux查询 数据可视化
一、关键概念 相比V1 移除了database 和 RP,增加了bucket。 V2具有以下几个概念: timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization 新增的概念&…...
Qt QTreeView简单使用
QT-QTreeView使用方法 QTreeView: 用于显示树状结构数据,适用于树状结构数据的操作。 一、初始化 利用QStandardlternModel来初始化数据,标准的基于项数据的数据模型类, 每个项数据可以是任何数据类型。 // 初始化model QStandardItem…...
Wannacrypt蠕虫老树开花?又见Wannacrypt
Wannacrypt蠕虫是一个在2017年就出现的远古毒株,其利用永恒之蓝漏洞降维打击用户服务器,而后进行扩散勒索,曾经一度风靡全球,可谓是闻者伤心,听着落泪,因为这玩意解密是不可能 解密的。 而2023年的今天&am…...
结合基于规则和机器学习的方法构建强大的混合系统
经过这些年的发展,我们都确信ML即使不能表现得更好,至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束,我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的,虽然机器学习在解决问题…...
Spring Security OAuth2实现多用户类型认证、刷新Token
原本的OAuth2登录支持用户名密码登录,现在还想支持另外用id号码和密码登录。但是OAuth2默认提供的UserDetailsService只允许传入一个参数:想要实现多种用户登录,是不是可以考虑loadUserByUsername方法携带多个参数呢?接下来记录一…...
云计算介绍,让你更了解云计算
同学们好! 第一次接触IT行业吗?没关系,看完这篇文章肯定会让你不再陌生。给自己几分钟时间,认真看完哦! 1、不知道什么是云计算? 网络计算云计算 官方定义是:通过网络提供可伸缩的分布式计算…...
阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞
就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。这不又到了面试跳槽的黄金段,成功升职加薪,不成功饱受打击。当然也要注意&…...
【JDK1.8 新特性】Lambda表达式
1. 什么是Lambda表达式? Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达…...
【Vue.js】Vuex核心概念
文章目录全局状态管理模式Vuexvuex是什么?什么是“状态管理模式”?vuex的应用场景Vuex安装开始核心概念一、State1、单一状态树2、在 Vue 组件中获得 Vuex 状态3、mapState辅助函数二、Getter三、Mutation1、提交载荷(Payload)2、…...
react router零基础使用教程
安装既然学习 react router 就免不了运行 react安装 reactnpx create-react-app my-appcd my-appnpm start安装 react routernpm install react-router-dom如果一切正常,就让我们打开 index.js 文件。配置路由引入 react-router-dom 的 RouterProviderimport {Route…...
IOC三种依赖注入的方式,以及区别
目录构造方法注入(constructor injection)setter 方法注入(setter injection)接口注入(interface injection)三种方式比较构造方法注入(constructor injection) 构造方法中声明依赖…...
Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存
文章目录1.安装新版本PCL-1.132.在工程中使用新版本的PCL-1.133.pcl-1.13误装到/usr/local/下如何卸载1.安装新版本PCL-1.13 下载PCL-1.13代码: 修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安…...
计算机图形学08:中点BH算法绘制抛物线(100x = y^2)
作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、算法原理二、…...
基于java的高校辅导员工作管理系统
摘 要网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块,对于高校辅导员工作管理将是又一个传统管理到智能化信息管理的改革,设计高校辅导员工作管理系统的目的就是借助计算机让复杂的班级信息、学籍信息等管…...
字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!
前言职场中的那些魔幻操作,研发最烦的是哪个?“面对业务需求的时候,可能都听过这样一句话:这个很简单,直接开发,三天内上线;”朋友说:“产品听了流泪,测试见了崩溃&#…...
详细介绍关于链表【数据结构】
文章目录链表单链表尾插头插尾删第一种方式删除第二种头删查找pos之前插入pos位置删除pos后面插入pos位置后面删除链表 顺序表缺点: 空间不够了 需要扩容,但是扩容是有消耗的头部或中间位置需要插入或删除,需要挪动 ,但是挪动是…...
2.3 二分搜索技术
二分搜索算法是运用分治策略的典型例子。给定己排好府的 n个元素a10:n-1],现要在这n个元素中找出一特定元素3。首先较容易想到的是用顺序搜索方法,逐个比较a10:1-1]中元素,直至找出元素,或搜索遍整个数组后确定,不在其…...
驯服失控菜单:让右键操作提速60%的实战指南
驯服失控菜单:让右键操作提速60%的实战指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你在Windows系统中右键点击文件时,是否曾面…...
从机器人ROS2到微服务gRPC:手把手教你用IDL定义跨语言通信的‘世界语’
从机器人ROS2到微服务gRPC:手把手教你用IDL定义跨语言通信的‘世界语’ 清晨的阳光透过实验室的玻璃窗洒进来,机械臂正在执行预设的轨迹动作,而云端的数据分析服务实时监控着它的能耗曲线。这个看似简单的场景背后,隐藏着一个复杂…...
2026年AI智能体大爆发:下一个十年风口,普通人的超级财富密码
比尔盖茨曾断言:“AI智能体(AI Agent)将彻底改变人们使用计算机的方式。”如果说2023年是大语言模型(LLM)的启蒙元年,那么到2026年,具备“感知-规划-行动”自主闭环能力的AI智能体将迎来真正的商…...
从零到一:基于LLaMA-Factory的微调实战与核心参数精讲
1. 环境准备与LLaMA-Factory初探 第一次接触LLaMA-Factory时,我对着官方文档发呆了半小时——这个工具链实在太强大了,但新手很容易被各种依赖项劝退。这里分享我的踩坑经验:不要一上来就追求最新版本。去年12月我在RTX 3090上折腾v0.4.0时&a…...
3D元器件库技术解析与工程应用指南
## 1. 3D元器件库技术解析与应用指南### 1.1 3D封装库的技术价值 在现代电子设计自动化(EDA)流程中,高质量的3D元器件库可显著提升设计效率。本套封装库包含1088个标准封装模型,涵盖电阻器、电容器、接线端子、IC芯片、晶振等常见电子元件,所…...
消防给水系统控制:西门子 S7 - 200 与昆仑通态触摸屏的奇妙组合
消防给水系统控制,西门子S7-200,昆仑通态触摸屏YH25 1.采用西门子S7-200PLC,CPU226EM223数字量模块EM231模拟量模块。 2.昆仑通态MCGS触摸屏及软件,可自行转换新版MCGSPRO程序。 3.两水泵一用二备和二用一备可切换,故障…...
OpenClaw任务编排技巧:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF复杂流程分解策略
OpenClaw任务编排技巧:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF复杂流程分解策略 1. 为什么需要任务编排 上周我尝试用OpenClaw自动完成一篇技术博客的写作和发布,结果遭遇了连环翻车:模型先花20分钟生成了偏离主题的初稿&…...
跨境服务数字化转型 JAVA 国际版打手俱乐部陪玩系统完整开发教程
以下是基于JAVA开发国际版打手俱乐部陪玩系统的完整开发教程,涵盖技术选型、核心功能实现、安全合规及部署方案:一、技术选型与架构设计后端框架:Spring Boot 3.2 Spring Cloud Alibaba:提供微服务拆分能力,支持Nacos…...
如何高效优化多语言模型:专业部署的完整策略
如何高效优化多语言模型:专业部署的完整策略 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否在部署多语言文本嵌入模型时遭遇过"显存…...
自然滚动的终结:Scroll Reverser如何重构输入设备交互逻辑
自然滚动的终结:Scroll Reverser如何重构输入设备交互逻辑 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在追求无缝人机交互的今天,macOS系统中输入设备…...
