肥宅钓鱼网
当前位置: 首页 钓鱼百科

深入理解jvm知识点(jvm学习记录二)

时间:2023-07-01 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

深入理解jvm知识点?虚拟机栈都知道是运行咱们方法的,实际上他的里面放了一个一个的栈针,同时每一个线程中都会独有一份虚拟机栈的内存空间。我们的每一个栈针中存放的又是什么呢?因为我们java代码在服务器运行,然而具体到jvm中就是每一个栈针。同时我们的局部变量表是一个有序的数组,他的第一个元素放的使我们的this,然后就是一次放我们的定义好的各种变量。但是这样命名却是也没有问题。

深入理解jvm知识点?1.先从最不熟悉的来,虚拟机栈虚拟机栈都知道是运行咱们方法的,实际上他的里面放了一个一个的栈针,同时每一个线程中都会独有一份虚拟机栈的内存空间这是为什么呢?可以想一想,如何不是每个线程独有一份,那栈里面的栈针(每一个栈针就是一个方法)谁知道是哪个线程的,jvm也不是上帝(QUQ).所以我们的jvm大佬在设计jvm的时候每一个线程都会有一根栈资源和对应的程序计数器(各自记录自己的垃圾代码执行到哪里了),下面我们就来聊聊关于深入理解jvm知识点?接下来我们就一起去了解一下吧!

深入理解jvm知识点

上一章大致介绍了jvm内存模型,下来接着各区的详细内容

1.先从最不熟悉的来,虚拟机栈。

虚拟机栈都知道是运行咱们方法的,实际上他的里面放了一个一个的栈针,同时每一个线程中都会独有一份虚拟机栈的内存空间。这是为什么呢?可以想一想,如何不是每个线程独有一份,那栈里面的栈针(每一个栈针就是一个方法)谁知道是哪个线程的,jvm也不是上帝(QUQ).所以我们的jvm大佬在设计jvm的时候每一个线程都会有一根栈资源和对应的程序计数器(各自记录自己的垃圾代码执行到哪里了)。

我们的每一个栈针(就是每一个java方法)中存放的又是什么呢?和我们写的java代码又有什么关系呢?考点必会**

1.局部变量表(又叫本地变量表,都是一个意思),在这里面存放的就是我们在方法中定义的一个一个的变量,包括了咱们java的基础数据类型和引用类型(这些变量又是怎么进入到我们的栈中的呢?这个会在下文中解释,不急!),具体的比如咱么定义的int类型变量,或者new出来的对象。。。

为什么需要把这些变量放在局部变量表中呢?(补充,局部变量中还存放着咱们的当前类的对象的this,相信大家都用过,但是如果是static修饰的方法既没有,因为这个东西是属于类的)。因为我们java代码在服务器运行,然而具体到jvm中就是每一个栈针(再详细的可以查看我们的字节码文件)。

同时我们的局部变量表是一个有序的数组,他的第一个元素放的使我们的this,然后就是一次放我们的定义好的各种变量。这里提到一个问题,我们的变量放在我们的栈中是要占用我们的虚拟机内存的,所以我们的栈会发生垃圾回收吗(GC)?显然不会的,如果我们的栈中方法太多,比如我们写了一个递归,但是因为种种原因(代码太垃圾),导致没有结束,那我们的栈中会因为有太多的方法而导致stackoverflower错误(英文不知道写对没有)。或者我们的局部变量表太大,比如我们定义了1万万的数组,往里面装满了值。(你认为会出问题吗?)*

2.操作栈,这个地方大家可以简单的记住就是用来计算的。他计算的又是什么呢?其实这个地方计算的就是比如:1 1等于几(不要觉得简单,你知道底层原理吗?)类似的东西,当然不会这么简单。比如我们定义了2个变量相加,我们会把a变量先压入操作数栈,然后把b变量压入操作数栈,然后相加,最后的出的数值出栈然后赋值给我们接受计算结果的比如c变量。其实就是这样(具体的可以反编译我们的的字节码文件进行查看,后文会详细介绍这个技能,当前等级不够还不能用这个技能!!!!!!)

插播一句,作者码子不易,看了觉得有用的大佬请点一下关注,后面会接着记录学习过程,和大家一起共同成长!!!!

3.动态链接,这个东西一看有点蒙。但是这样命名却是也没有问题。因为这个东西关联到了我们方法区中的东西(java8叫元空间),我们都知道,我们的字节码中的(没看过字节码的自己看看,如果不想看先忽略后文问有详细介绍)会有很多的符号引用,在我们运行java代码的过程中,比如我们引入一个int类型的变量a他的值是5,虽然我们写java代码的时候知道我们自己写了这一段代码,但是我们需要把我们的java代码转换成字节码,然后转换成机器指令(01010101.。),首先java代码转换成字节码的时候,我们就需要告诉jvm我们的代码逻辑是什么,我们先执行那个再执行那个,同时我们的代码在编译成字节码的时候,我们的类信息是放在我们的方法区的,所以我们需要一些符号引用放在我们的栈针中,这里会有一个问题,我们的数据不都有一个内存地址吗?为什么不用这个,而是用符号引用,我可以告诉你就是为了简洁,所以我们的动态链接就是指向的我们的方法区一个个符号引用,他们在运行时候会转换成一个一个的直接引用(在讲方法区的时候会详细介绍),为什么叫动态,因为他是运行的时候用的,还有的叫静态链接没他事类加载,初始化的时候用到,总结一句话就是:我们的类信息,包括类中的方法,修饰符,变量,变量类型,字面量,这些东西都是放在方法区的,如果我们的栈针中要用,就要去方法区中找,然而找的时候就是用的符号引用,就是相当于他们的序号,二这就叫动态链接,不知道懂了没有,后面会懂得(嘿嘿嘿),

    推荐阅读
  • 恰如其分意思(恰如其分的出处)

    下面内容希望能帮助到你,我们来一起看看吧!恰如其分意思恰如其分,汉语成语,拼音是qiàrúqífèn,一指说话办事不过分;二指办事或说话十分恰当合适。出自清朝李绿园《歧路灯》第108回。清·李绿园《歧路灯》第108回:“赏分轻重,俱是阎仲端酌度,多寡恰如其分,无不欣喜。”

  • iphone怎么无线传输数据到windows(你知道iPhone连接windows系统文件传输的一个小技巧么)

    苹果在iOS13系统对内置的文件App功能进一步加强,支持连接SMB服务器,这就提供了一个iPhone与Windows电脑互相传输文件的途径。SMB是一种在局域网上共享文件以及打印机的一种通信协议,它可以为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。

  • 炸鸡蛋拌菠菜怎么做(炸鸡蛋拌菠菜怎么做好吃)

    5、用筷子比着淋入锅里快速划散,不停用筷子划动,使形成鸡蛋碎,晾凉。

  • lol测试服符文改版(双城之战皮肤登场)

    经过该领域的敌人会被减速。如果誓约友军的生命低于30%,则伤害转移上限提升至20%。地形效果:地图受祖安科技亚龙影响时,4个野区范围将出现瘴气。海克斯科技亚龙增益效果:获得攻击速度与技能急速加成龙魂效果:获得海克斯科技龙魂后,英雄普通攻击和技能获得独特的连锁闪电,攻击命中敌人会造成减速效果。使用海克斯传送门需经过短暂引导,随后可将一名玩家快速传送到地图另一边的对应海克斯传送门处。

  • 2022年新年短信祝福语(2022年新年朋友圈祝福语文案)

    2022年新年短信祝福语虎年大吉喜气临,昂首摆尾迎春来。胡须翘翘美姿态,人人开心祝平安。鞭炮声声唱响了春节的喜乐年华,各族人民传统大节的烟花盛开。虎的传人舞狮挥虎庆贺虎年的到来,秧歌高跷舞出了全国人民心中的喜悦,幸福美满喜笑颜开。每一笔都是我对你的祝福和问候,祝你除夕春节快乐!

  • 冬至传统一般吃什么食物(冬至吃的食物介绍)

    饺子原名“娇耳”,相传是我国医圣张仲景发明的,距今已有一千八百多年的历史了。人们吃下祛寒汤后浑身发热,血液通畅,两耳变暖,一段时间病人的烂耳朵就好了。

  • 挑西瓜有什么技巧(挑西瓜的技巧有哪些)

    下面更多详细答案一起来看看吧!挑西瓜有什么技巧挑西瓜首先看西瓜看表皮纹路。每个西瓜的表面都有很多纹路,如果这些纹理非常清晰细腻,就说明这个西瓜已经自然成熟,肯定又红又甜。反之如果纹路看起来比较模糊,就说明西瓜可能还没熟,也可能摘早了,这样就很可能不甜。如果瓜脐比较小,则说明皮比较薄,味道比较甜。当然大家熟知的拍一拍听一听。如果听起来是声音清脆,则说明这个西瓜虽然水分很多,但是不会很甜。

  • 梦见水里有鱼(梦见河里有鱼)

    梦见水里有鱼梦见河里有鱼意味着,这两天的你容易表现出冷漠的情绪。试着还有感恩的心,来对待每个人和每件事情,不要过度沉浸在现有之中,若能够保持,这两天的安心会在未来的每天都存在你的生活中。梦见河里有好多鱼,工作顺利,没有什么令人烦心的事情。做生意的人梦见河里有好多鱼,主财运:不佳,有损失。待考者梦见河里有好多鱼,预兆考试成绩好。

  • 3月第四周:生猪价格上涨 4月份猪价持续下跌

    据对全国500个集贸市场畜禽产品和饲料价格定点监测,3月份第4周生猪价格上涨,禽类产品、牛羊肉、玉米价格下降,生鲜乳价格持平。全国仔猪均匀价格42.37元/公斤,比前一周上涨4.2%,同比上涨102.3%。30个监测省份仔猪价格均上涨。西南地区猪肉均匀价格较高,为30.22元/公斤;西北地区较低,为28.25元/公斤。河北、辽宁等10个主产省份鸡蛋均匀价格7.30元/公斤,比前一周下降0.3%,同比下降10.0%。

  • 第11代英特尔酷睿处理器频率(只认性能你就输了)

    从结果来看,i7-1065G7的CPU性能提升幅度不算太大,GPU性能则表现抢眼,总体表现似乎没有达成广大消费者对这款最新10nm处理器的心理预期。如此算来,IceLake发布的时间节点其实是刚刚好。台积电早在2018年就量产了7nm制程工艺,并成就了苹果A12、麒麟980和骁龙855的赫赫威名。但无论如何,随着搭载10nm工艺的第十代移动酷睿IceLake处理器的笔记本上市,英特尔有望逐步收复过去一年来流失的份额,全面迎击AMD移动锐龙家族的挑战。