77百科网
当前位置: 首页 生活百科

深入理解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我们的代码逻辑是什么,我们先执行那个再执行那个,同时我们的代码在编译成字节码的时候,我们的类信息是放在我们的方法区的,所以我们需要一些符号引用放在我们的栈针中,这里会有一个问题,我们的数据不都有一个内存地址吗?为什么不用这个,而是用符号引用,我可以告诉你就是为了简洁,所以我们的动态链接就是指向的我们的方法区一个个符号引用,他们在运行时候会转换成一个一个的直接引用(在讲方法区的时候会详细介绍),为什么叫动态,因为他是运行的时候用的,还有的叫静态链接没他事类加载,初始化的时候用到,总结一句话就是:我们的类信息,包括类中的方法,修饰符,变量,变量类型,字面量,这些东西都是放在方法区的,如果我们的栈针中要用,就要去方法区中找,然而找的时候就是用的符号引用,就是相当于他们的序号,二这就叫动态链接,不知道懂了没有,后面会懂得(嘿嘿嘿),

    推荐阅读
  • 小猪佩奇人物介绍(小猪佩奇人物有哪些)

    小猪佩奇人物介绍?小猪佩奇人物介绍佩奇:佩奇是一只非常可爱的小猪,她最喜欢跳泥坑,最喜欢吃的是意大利面和巧克力蛋糕,最喜欢扮成小仙女公主。活泼调皮,喜欢吃意大利面和巧克力蛋糕,喜欢喝果汁,最最喜欢的是恐龙。有时有点迷糊,但非常疼爱佩奇和乔治。

  • 闪光器(闪光器的工作原理)

    当电源接通后,利用晶体管V1的开关特性,形成一个间歇振荡,使T1的初级获得一个交变电压,经T1升压,使其次级获得大于300V的交变电压。交变电压经二极管D1半波整流后变成直流电压,对主电容C2和触发电容C3充电储能。当电压充至额定电压的70%左右时,指示电路中的氖灯起辉,指示闪光灯处于正常闪光等待状态。当外界景物的亮度不足时,照相机的测光系统便发出一个低照信息,此时用手动方式或由照相机自动接通闪光电路进行充电和闪光。

  • 奶产业发展方案(振兴升级低碳)

    据唐宏介绍,三元食品始终关注奶牛自主育种能力的提升,长期致力于优秀种公牛自主培育和群体遗传改良。消费升级推动乳业高质量发展随着中高端消费需求不断上升,乳业进入高质量发展阶段,消费者需求层次由单一向多元化、个性化转变。今年,新希望乳业与国家市场监督管理总局认证认可技术研究中心达成合作,与国内相关“碳中和”科研团队一道运用科研技术对温室气体排放进行准确核算,并应用减排技术制定“零碳乳业”行动计划。

  • 金陵十二钗排名顺序(金陵十二钗是怎么排序的)

    成为“金陵十二钗”必须是宝玉“自己家乡的”、实际上是与主人翁贾宝玉关系密切的。林黛玉薛宝钗“一个是阆苑仙葩,一个是美玉无瑕”,难分伯仲,与贾宝玉关系又非同一般,所以作为“双璧”置于首位。贾家四姐妹之间“加塞”妙玉,是因为妙玉才貌双全,与贾宝玉关系“特殊”。女儿巧姐应该是占了母亲的光,紧随其后。悲剧,悲惨的结局,更是金陵十二钗的“最大”的公约数。

  • 古代五大战车(古代车战靠什么取胜)

    浩浩荡荡的军队由方叔带领奔赴南方。作为元帅的方叔起到的最大作用是指挥作战而不是亲自出战。这一场征伐之战中周王室取得完胜。这首诗强调的是众多兵车组成的军队作战时的场面浩大。败军争渡黄河已经遭一大劫,过了黄河上了战车溃逃时战车又陷入泥泞之中。中行穆子面对以无终部为首的戎狄,山地作战是地理条件的特征,中行穆子听从了魏舒的建议把车兵全部改编为步兵。

  • 美国非农数据和薪资(美国非农就业数据的简单介绍)

    对于外汇市场而言,非农数据已经成为每月必须关注的重头戏,它是外汇市场最引人关注的经济数据了。非农就业数据是指美国劳工统计局统计的就业指标,全面反映就业机会的制造、流失、工作时间以及薪资变化。在NFP数据发布之前,市场反应非常迅速且大部分时间都是非常不稳定的。相较于交易其他数据,交易非农数据要令人兴奋的多,许多投资者可以在短时间内获得更大的盈利。

  • 中山人才补贴政策 中山政府人才补贴

    由用人单位选择引进,由市人社局审核并核定额度,为引进人才按实际年工资薪金收入1∶1比例提供生活补贴,每人每年最高不超过100万元,享受期为3年。遇有层次变更、待遇补发等特殊情况,参照以下认定的紧缺适用高层次人才津补贴发放具体规定操作。自2018年1月起执行,被认定的高层次人才津补贴发放工作由市人社局负责解释。该政策自印发之日起实施,有效期5年。

  • 秋葵可以和西红柿炒鸡蛋一起吃吗(秋葵鸡蛋西红柿能一起炒吗)

    秋葵是生活中常见的蔬菜,很多人日常都喜欢吃秋葵,昨天我买了一些秋葵准备吃,然后家里还有西红柿炒鸡蛋,秋葵可以和西红柿炒鸡蛋一起吃吗?秋葵可以和西红柿炒鸡蛋一起吃吗可以适量同食。秋葵隔夜最好是用保鲜膜包裹表面,然后放入冰箱冷藏保存,如果秋葵保存得好,并没有出现有异味、腐烂等变质情况,是可以正常食用的,并不会对身体健康产生影响。

  • 如何挑选质量好的奶粉(选奶粉只看品牌)

    含有乳铁蛋白的奶粉可以增强宝宝的抵抗力,促进宝宝身体发育,还能减少腹泻,同样市面上很少有奶粉有这个配方成分。

  • 宝宝几个月长牙(新生宝宝几个月长牙)

    宝宝几个月长牙正常宝宝平均6个月左右开始长牙。宝宝6个月左右,开始添加辅食,这时候牙齿也开始萌出。所以,当宝宝满六个月以后,家长应及时给宝宝添加辅食,给他半固体或固体的食物来咬,有利于牙齿萌出。不过需要注意的是,长牙晚并不代表孩子一定缺少钙或维生素D,具体原因还需要通过医生检查诊断来明确。