目录
1. 定义
栈:线程运行时需要的内存空间,一个栈存在多个栈帧。栈具有先入后出,后入先出的特点。

栈帧:每个方法运行时需要的内存(局部变量表、操作数栈、动态链接和方法返回值等信息。),每次调用一个方法,便会将栈帧压入栈中,方法执行完毕将栈帧从栈顶压出
活动栈帧:指在栈顶的栈帧,既正在调用的方法,每个线程只能有一个活动栈帧,对应着该线程正在调用的那个方法
现在我们用代码来演示一下Java虚拟机如何将栈帧压入及压出栈中
public class Main {
public static void main(String[] args) {
method1();
}
private static void method1() {
method2(1, 2);
}
private static int method2(int a, int b) {
int c = a + b;
return c;
}
}
当我们运行Main函数时,jvm首先将栈帧Main压入栈中,此视栈结构如图所示
Main函数体中调用了method1方法,此时便会将栈帧1压入栈中
method1方法体中调用了method2方法,这时jvm会将栈帧2压入栈结构中,需要注意的是,前面我们提到了栈帧由 “局部变量表、操作数栈、动态链接和方法返回值”等信息组成,method2方法中拥有a,b两个参数以及局部变量c和方法返回值
当method2方法执行完后,会将栈帧2从栈顶弹出
method1方法执行完毕后,将栈帧1弹出
依次顺序直至线程被销毁。
注意点
- 由于每个栈帧都会在方法调用完毕后被弹出,因此栈内存不需要进行垃圾回收
- 每个栈都是线程私有的,每个线程在创建的时候都会创建一个虚拟机栈,而由于物理内存是固定的,栈内存划分得越大,可分配的线程数就越少
2. 栈的线程安全问题
局部变量是线程安全的
现在我们定义如下方法:
public static void method() {
int a = 0;
a++;
}
我们在方法method中定义了一个局部变量a,并对其执行a++操作,现在假设我们有两个线程同时调用了这个方法(栈帧),Java虚拟机会将该栈帧压入各自线程的栈内存中,但由于局部变量表是线程私有的,所以两个线程在同时调用这个栈帧后,a的值仍然都为1,故局部变量是线程安全的
方法参数和方法返回值不是线程安全
由于方法的参数和返回值均可被外部方法所引用,故在某个线程下某个方法可以更改另外一个方法的参数和返回值,故方法参数和方法返回值不是线程安全的
3. 栈内存溢出
由于程序执行时,虚拟机给每个栈分配的栈内存空间是固定的,所以在一些情况下有可能出现栈内存空间不足,导致溢出的情况,一般有两种情况可能导致栈内存溢出
- 栈帧过大(较少出现)
- 栈帧过多(一般出现在递归时。没有正确设置递归出口)
现在我们来解释一下什么时候会出现栈帧过多导致栈内存溢出,我们来假设某一个栈的内存空间大小是1024kb,现在有四个栈帧,每个栈帧的大小均为300kb,而 300 * 4 = 1200kb, 而 1200 > 1024 ,很显然,现在这四个栈帧合起来的大小已经超过了这个栈的内存空间大小,这个时候就会出现栈内存溢出,也就是会报java.lang.StackOverflowError这个错误。
到此这篇关于Java虚拟机栈jvm栈的作用的文章就介绍到这了,更多相关Java jvm栈内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关推荐:
SEO武汉:如何提升武汉地区网站的搜索引擎排名,景区网站建设费用
seo需要保持什么心态,seo的要求 ,ai83562
SEO职位:数字营销的核心,开启职业新高峰,汕尾网站建设推广厂商
智能AI写作生成:如何借助人工智能提升创作效率与质量
亚马逊站内seo是什么优化,亚马逊seo关键词优化软件 ,ai画卡通章鱼
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
怎么用AI缩写文章,轻松提高效率的全新方法
SEO软优化:助力网站实现流量爆发的秘密武器,延平区网页seo
360刷排名工具选哪家?揭秘2025年最强排名优化工具!,ai写作网站哪个好一点
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
SEO优化工具优势:提升网站排名,带来流量和转化的秘密武器,ai圆形造字
SEO观看:如何通过优化提升您的网站流量和品牌影响力,龙里网络营销推广
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
SEO差价如何用SEO优化帮助企业实现成本与效益的完美平衡,盐城seo收费贵吗
OpenAI注册问题解决方案:如何顺利通过手机号验证,反对ai头像
未来写作新模式文章撰写AI如何助力内容创作
SEO站在未来之巅,助力网站在激烈竞争中脱颖而出,推荐网站优化欢迎咨询
文章疑似AI生成怎么办?如何辨别并应对AI生成文章的挑战
优化分析:提升企业效益的关键策略,山东大网站建设
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
SEO快速排名实例:如何通过实战技巧提升网站排名,快速突破流量瓶颈,安徽ai跑步机企业
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
优化文字,让表达更精准:提升写作效率的关键,个人网站建设外包
URL泄露:如何防止信息泄露带来的严重后果,抖音推广营销服务多少钱
SEO就是:让你的品牌脱颖而出,获得更多曝光与流量,梅岭关键词排名优化
seo相关知识是什么,seo相关技术 ,ai写作讯飞星火认知大模型
seo用什么法宝,列出5种seo赚钱方式 ,ai怎么更改文档样式
用AI写的文章算原创吗?真相揭示,带你深度思考!
什么是seo在线咨询,什么是seo在线咨询服务 ,unreal ai
AI搜索写文章:一丝丝智慧背后的无限可能,电脑免费ai写作神器
SEO学堂:开启数字营销新时代,全面提升网站排名与流量,文山ai营销推广方案
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
seo站内链接有什么作用,seo中网站内链的作用 ,781900ai
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
ChatGPT:智能对话开创新时代,ai做渐变直线
ChatGPT暂时不可用?如何高效应对并寻找最佳替代方案!,logo ai教程视频
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
SEO要求:如何优化网站提升搜索引擎排名,助力企业获取更多流量,鹤山区网站运营推广
自动写文章的AI,提升效率的创作利器
互联网留痕:数字时代的隐形轨迹与自我管理,灯塔网站推广包年多少钱
高效创作新时代AI文案速写工具,让创作更轻松
ChatGPT付款银行卡被拒绝?解决方案全解析!,小发猫ai智能写作查重能过吗
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
文章AI扩写:突破创作瓶颈,提升写作效率的秘密武器
GoogleSEO打满分自然流量会高吗?揭开SEO优化的真相,猪插画ai
SEO快速优化排名:助你网站跃升搜索引擎首页,ai彩虹立体9怎么做
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
SEO架构:提升网站流量的核心策略,东营南江全平台营销推广
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
重生成AI:突破科技前沿,开启智能未来