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

JVM-程序计数器与栈

目录

  • 程序计数器
    • 1:作用:
    • 2:特点:
      • 1:线程私有
      • 2:内存不会溢出
    • 1:介绍:
    • 2:问题辨析:

程序计数器

1:作用:

程序计数器的作用就是记录下一条jvm指令的执行地址,由解释器读取,物理上的结构是寄存器;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具体是这样的:首先将java源代码编译成二进制字节码,二进制字节码就是一些jvm指令,然后解释器会将jvm指令解释成机器码再由cpu读取,而解释器就是从程序计数器获取下一条jvm命令的执行地址。

2:特点:

1:线程私有

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线程通过cpu的调度器来调度,调度器分给线程时间片,当时间片结束的时候会切换到其他线程,所以每个线程都需要一个程序计数器来保存下一条jvm的执行地址。故程序计数器是线程私有的,每个线程都有自己的程序计数器;

2:内存不会溢出

1:介绍:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

栈是一个线程运行时所需要的内存空间;

栈帧:一个方法运行所需要的内存空间;

方法执行:方法1执行,栈帧1入栈,方法1调用方法2,栈帧2入栈,方法2调用方法3,栈帧3入栈,栈帧3执行完结果返回给方法2,方法2执行完结果再返回给方法1;依次出栈

2:问题辨析:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先第一个问题:垃圾回收不会涉及到栈内存,因为栈帧执行完出栈会自动释放内存;

第二个问题:栈内存分配的越大越好嘛?并不是,因为栈内存是每个线程占用的内存大小,如果栈内存变大,总内存不变,那么线程数量会变少。我们可以通过-xss参数来设置栈内存大小,linux和mac默认的栈内存的大小都是1mb;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第三个问题:判断局部变量是否线程安全就是要确定这个变量是每个线程私有的还是共有的。如果不是static,那么因为每个线程都会单独开一个栈,多个线程不会有影响,如果是static,那么因为是公共的就会有线程安全问题;

第三个问题再加上扩展:

如果局部变量没有逃离方法的作用范围就是线程安全的。

如果局部变量逃离了方法的作用范围就是线程不安全的;

相关文章:

JVM-程序计数器与栈

目录 程序计数器1:作用:2:特点:1:线程私有2:内存不会溢出 栈1:介绍:2:问题辨析: 程序计数器 1:作用: 程序计数器的作用就是记录下一条…...

【kotlin 】内联类(value class / inline class)

官方文档:https://kotlinlang.org/docs/inline-classes.html 注:inline class 关键字已经被废弃,取而代之的是value class。现在使用内联类需要定义类为value class,并使用JvmInline注解进行标注。 一、使用场景 有时候&#xff…...

【SpringBoot】使用IDEA创建SpringBoot项目

1、使用SpringBoot脚手架创建 我们使用SpringBoot的脚手架Spring Initializr创建,如图所示: 2、选择SpringBoot版本 最开始做项目时候,组长说创建一个 springboot 2.5.4 的项目,mysql使用 5.6.X ,maven使用是3.6.X…...

C++设计模式(原型、代理、适配器、组合)

一、原型模式 1.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式允许通过复制现有的对象来创建新对象,而不是通过实例化类来创建。这种方式可以避免创建重复的对象,从而提高性能和降低内存消耗。 2.组成 …...

如何在CentOS 7上使用FreeIPA设置集中式Linux身份验证

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 FreeIPA 是一个针对 Linux 的开源安全解决方案,提供帐户管理和集中式身份验证,类似于微软的 Active Direc…...

vue2播放视频和预览文件的组件以及使用方法

##文件预览组件 按照组件 解决展示pdf的问题 npm install pdfh5 npm install canvas2.8.0 --ignore-scripts npm install --save dommatrix npm install --save web-streams-polyfill解决excel和docx预览的问题 npm install vue-office/docx vue-demi0.14.6 npm inst…...

性能之巅:Go语言优化深度探索

引言 在Go语言中进行性能优化是一个涉及多方面的工作,它涵盖代码编写、编译器优化、运行时系统调优以及对应用程序的深入理解。以下是一些关键点,包括性能分析工具、内存管理、并发优化等方面的内容,并附带了简单案例源代码。 性能分析工具…...

react + antd desgin 使用form功能时upload,radio,checkbox不能回显的问题

最近使用react开发 遇到form回显的问题 ,处理upload回显的问题,提示 react-refresh:160 Warning: [antd: Upload] value is not a valid prop, do you mean fileList? 查看文档后,在form.item 组件下有一个特殊属性 valuePropName 子节点的值…...

【08】MySQL复杂查询:子查询语句详解与示例

文章目录 一、子查询的基本概念子查询的基本结构子查询的类型 二、标量子查询示例 1:标量子查询示例 2:标量子查询与IN组合 三、多行子查询示例 1:多行子查询与IN示例 2:多行子查询与ANY 四、多列子查询示例 1:多列子查…...

Unity 相机旋转及角度限制

前言 由于欧拉角具有直观的可读性,做相机旋转时选择修改eulerAngles 来实现旋转,但实际效果与预期稍有不同,这是因为欧拉角受到万向锁(Gimbal Lock)的影响,在赋值时需要对输入的角度进行调整。 if (value…...

error=‘null‘], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]

问题 查看java应用启动日志输出下面错误: errornull], commandTypeio.lettuce.core.RedisPublisher$SubscriptionCommand] Completing command LatencyMeteredCommand [typeINFO, outputStatusOutput [output# Server redis_version:4.0.14 redis_git_sha1:000…...

Golang 字符串字面量表示方法

文章目录 1.普通字符串字面量(Double-Quoted String Literals)2.原始字符串字面量(Raw String Literals)3.字节字符串字面量(Byte Slice Literals)4.码值表示字符串字面量Unicode 转义序列UTF8 转义序列十六…...

03_Webpack模块打包工具

03_Webpack模块打包工具 目录 知识点自测 以下哪个选项是 ECMAScript 默认导出和导入的语法? A:export 和 require B:module.exports {} 和 import 变量名 C:export default 和 import 变量名 D:export 和 import {…...

【目标跟踪】AntiUAV600数据集详细介绍

AntiUAV600数据集的提出是为了适应真实场景,即无人机可能会随时随地出现和消失。目前提出的Anti-UAV任务都只是将其看做与跟踪其他目标一样的任务,没有结合现实情况考虑。 论文链接:https://arxiv.org/pdf/2306.15767https://arxiv.org/pdf/…...

十、JavaScript的应用的习题

题目一 在网页中显示一个工作中的 “ 数字时钟 ”&#xff0c;如图所示 运行效果 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>动态时钟</title><style>.all{width: 660px;height: 350px;margin: 60p…...

【Spring】AOP

AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;是一种编程范式&#xff0c;用来帮助开发者更好地组织程序结构。它的主要作用是为现有功能添加增强&#xff0c;而不需要修改原始代码。这与 Spring 框架提倡的“无侵入式编程”相符&#xff0…...

三维地图,智慧城市,商业智能BI,数据可视化大屏(Cesiumjs/UE)

绘图工具 三维地图&#xff1a;Cesiumjs 建模方式&#xff1a;激光点云建模、航拍倾斜摄影建模、GIS建模、BIM建模、手工建模 建模工具&#xff1a;C4D Blender GeoBuilding ArcGIS Cesiumjs <!DOCTYPE html> <html lang"en"> <head><meta …...

鸿蒙Next通过oss上传照片到阿里云

前言 最近在写纯血鸿蒙的APP&#xff0c;需要用到oss上传照片&#xff0c;之前的客户端 Android 和 IOS 都已经实现了&#xff0c;获取的阿里云签名的上传地址是服务端实现的&#xff0c;相信大部分公司都是这样的模式&#xff0c;服务端也是调用阿里云的SDK来实现的&#xff…...

小白爬虫——selenium入门超详细教程

目录 一、selenium简介 二、环境安装 2.1、安装Selenium 2.2、浏览器驱动安装 三、基本操作 3.1、对页面进行操作 3.1.1、初始化webdriver 3.1.2、打开网页 3.1.3、页面操作 3.1.4、页面数据提取 3.1.5、关闭页面 3.1.6、综合小案例 3.2、对页面元素进行操作 3.2.…...

nlp培训重点

1. SGD梯度下降公式 当梯度大于0时&#xff0c;变小&#xff0c;往左边找梯度接近0的值。 当梯度小于0时&#xff0c;减去一个负数会变大&#xff0c;往右边找梯度接近0的值&#xff0c;此时梯度从负数到0上升 2.Adam优化器实现原理 #coding:utf8import torch import torch.n…...

NAS-FPN里的GP和Sum Cell到底怎么工作的?手把手图解MMCV源码实现

NAS-FPN中的GP与Sum Cell工作机制解析&#xff1a;从理论到MMCV源码实现 在目标检测领域&#xff0c;特征金字塔网络(FPN)已经成为处理多尺度目标的标配组件。然而传统FPN采用固定的人工设计结构&#xff0c;难以适应不同检测任务的需求。NAS-FPN通过神经网络结构搜索技术&…...

Keil C编译器字符串常量合并机制与内存优化

1. Keil C编译器中的字符串常量合并机制解析在嵌入式开发中&#xff0c;内存优化是一个永恒的话题。Keil C编译器&#xff08;包括C51、C166和C251版本&#xff09;提供了一项智能特性——自动合并重复的字符串常量。这个功能看似简单&#xff0c;但对资源受限的嵌入式系统而言…...

别光顾着写EXP:复盘BUUCTF warmup_csaw_2016,聊聊PWN题里的‘信息泄露’与安全编程

从CTF漏洞利用到安全编程&#xff1a;深入解析信息泄露与防御实践 引言 在网络安全竞赛和实际系统安全中&#xff0c;信息泄露往往成为攻击者突破防御的第一块敲门砖。2016年CSAW CTF的warmup题目虽然看似简单&#xff0c;却完美展示了这类漏洞的典型模式——程序不仅存在栈溢出…...

告别盲测!用CANoe回放功能搭建你的车载网络自动化测试环境

告别盲测&#xff01;用CANoe回放功能搭建你的车载网络自动化测试环境 车载网络测试工程师们是否经常遇到这样的困境&#xff1a;每次路试或台架测试后&#xff0c;堆积如山的CAN日志只能用于临时问题排查&#xff0c;无法形成可复用的测试资产&#xff1f;当需要验证某个历史问…...

终极指南:8步搭建你的私人游戏串流服务器Sunshine

终极指南&#xff1a;8步搭建你的私人游戏串流服务器Sunshine 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上流畅玩PC游戏吗&#xff1f;Sunshine是一款免费开源…...

用C#给PowerMill做个外挂:手把手教你写第一个连接与断开PM的WinForm工具

用C#打造PowerMill效率工具&#xff1a;从零构建自动化控制面板 在CNC编程工程师的日常工作中&#xff0c;PowerMill作为行业领先的CAM软件&#xff0c;其强大的功能背后也隐藏着大量重复性操作。每天数十次的项目打开关闭、连接状态检查、刀具路径查询等机械式点击&#xff0c…...

CGI Studio 3.11:AI驱动与安全合规的嵌入式HMI开发平台解析

1. 项目概述&#xff1a;为什么我们需要CGI Studio这样的HMI设计工具&#xff1f;在嵌入式系统开发领域&#xff0c;尤其是在汽车、工业和高端家电行业&#xff0c;图形用户界面的复杂度和美观度要求正以前所未有的速度提升。十年前&#xff0c;一个简单的单色LCD屏幕配上几个按…...

Python/Numpy线性代数编程:DeepLearningBook-Notes代码实现完整手册

Python/Numpy线性代数编程&#xff1a;DeepLearningBook-Notes代码实现完整手册 【免费下载链接】deepLearningBook-Notes Notes on the Deep Learning book from Ian Goodfellow, Yoshua Bengio and Aaron Courville (2016) 项目地址: https://gitcode.com/gh_mirrors/de/de…...

告别手动传图!用PicGo+Gitee给Typora配个自动图床(保姆级配置+避坑清单)

打造无缝Markdown写作体验&#xff1a;自动化图床配置全攻略 在技术写作和知识管理的世界里&#xff0c;Markdown已经成为事实上的标准格式。然而&#xff0c;一个长期困扰写作者的问题始终存在——图片管理。传统方式需要手动上传图片到图床&#xff0c;复制链接&#xff0c;再…...

别再手动算日期了!SQL Server里DATEDIFF和DATEADD的5个实战场景,数据分析师必看

SQL Server日期处理实战&#xff1a;DATEDIFF与DATEADD的5个高阶应用场景 在数据分析与报表开发领域&#xff0c;时间维度永远是核心要素之一。无论是用户行为分析、业务指标计算还是系统自动化处理&#xff0c;精准的日期运算能力直接决定了数据价值的挖掘深度。作为SQL Serve…...