jvm上——未含GC

本文详细探讨了JVM内存模型,包括程序计数器、虚拟机栈、本地方法栈、堆和方法区(元空间),以及JMM内存模型。介绍了volatile、锁、synchronized和final的内存语义。此外,还讨论了类加载机制,如双亲委派、对象创建过程和初始化。最后,重点讲解了string对象和基本类型的内存行为。
摘要由CSDN通过智能技术生成

致力于高质量的博文分享

 

jvm本以为是老生常谈,快7年止痒的时候,往往会蹦出新鲜玩意,让你眼前一亮;这……(台词到位,灯光准备)就是技术的力量,我骄傲!

首先感谢拉钩教育张雷老师《32个java面试必考点》和李国老师《深入浅出java虚拟机》的教导,同时也感谢各位同仁在网络上的分享!

 

盗取灵芝图一张

 

jvm内存模型

 

程序计数器线程私有,记录虚拟机字节码指令的地址,当前的执行进度

     唯一不出现outOfMemoryError的内存区域,生命周期这么悲伤的事情我其实不想讲,诶,跟所属线程一样一样的(后面的私有你懂的)

     较小的内存空间,当前线程执行字节码的行号指示器,通过改变该值选取下一条要执行的字节码指令:分支、循环、挑战、异常处理、线程恢复等

虚拟机栈线程私有,方法执行时创建栈帧储存局部变量/操作数/动态链接/方法返回地址

    局部变量表:编译期可知的基本数据类型/对象引用类型/returnAddredd类型;表大小不可变

    操作数栈:后进先出LIFO;深度由编译期决定,且任意时刻深度固定,基本数据类型long double占两深度其他1个;存放上表复制的变/常量,提供提取,结果入栈,存参数,接收返回值(这是一个动态的过程,网上资料很多,很简单比较有意思就不介绍了,加油/你是最胖的)

   动态链接:这个不太好说,先看方法返回值(没错赤裸裸的逃避)

   方法返回地址

        退出方法:1、执行引擎遇到返回字节码指定,一般来说调用者PC计数器的值可作为返回地址;2、遇到方法体内没有处理的异常,此时通过异常处理器确定返回地址,既然你要耍脾气我栈帧可不记录你

       正常返回时为了程序正确进行,退出时可能要恢复上层方法的局部变量/操作数栈,有返回值则将其压入调用者操作数栈,调用pc计数器的值来指向后面的指令

本地方法栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值