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

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

    推荐阅读
  • 初学者养猫注意事项中华田园猫(听说你想养猫咪)

    最近小编的朋友想要买一只猫咪,并且打算高价入一只纯种的美国短毛猫,其实她也不懂猫咪的种类分类啦,原因很简单,小土猫没有纯种血统,论颜值,论家世,论出身肯定都比不上纯种的猫咪啦,小编听到这里可就不开心了,连忙纠正她,小土猫怎么啦,人家猫咪有种类的好叭,是中华田园猫哦,中华田园猫!中华田园猫虽然是小土猫,是免费的,但并不代表它品种单一和性格不好。

  • 人格破碎是什么意思 破碎型人格的特征

    人格破碎意思是将以前完美的形象完全毁掉,从而变成一个消极堕落甚至迷茫的人,人设由积极变为消极从而一蹶不振。人格破裂是思维形式障碍的一种,患者在意识清楚的情况下,思维联想过程破裂,谈话内容缺乏内在意义上的连贯性和应有的逻辑性,对精神分裂症的诊断有重要的参考价值。主要表现在联想松散、支离破碎,让人不知所云。正常思维突然中止或涌现大量的强制性思维。

  • 从来的意思(从来啥意思)

    下面更多详细答案一起来看看吧!从来的意思从来释义:从过去到现在:他从来不失信。这种事我从来没听说过。唐归仁《题楚庙》诗:“羞容难更返江东,谁问从来百战功?”宋王安石《金陵怀古》诗之一:“《黍离》《麦秀》从来事,且置兴亡近酒缸。”

  • 西晋历史被谁灭亡(西晋是怎么灭亡的)

    曹魏后期,政治日益腐败,阶级矛盾越来越严重,统治阶级内以曹爽为首和以司马懿为首的两个集团明争暗斗,矛盾越来越严重。如此一来,无疑是增加了士族的权力,也助长了其政治上的腐化。这一条政策,直接或者间接地导致了后来的五胡乱华事件。加上西晋贵族对少数民族的剥削,五胡乱华的事件也随之爆发了,而此时的西晋已无力镇压。而后,各族陆续在北方建立国家,史称“五胡十六国”。

  • 月亮的作文(有关月亮的作文范文)

    下面更多详细答案一起来看看吧!月亮的作文晴朗的夜晚,我独自走在幽静的林荫小道上,享受着大自然给予我们的所有。我来到一棵古老而沧桑的老松树前,背倚着它,眺望着天空中美丽的月亮。今天的月亮可真美,那弯弓似的月亮,在云层中若隐若现,仿佛一个少女蒙着轻柔的面纱。月亮发出的光,是柔和的。夜,已经深了,我身披月光,轻轻地走在回家的小路上,每一步都小心翼翼,生怕打搅了花草树木们的美梦。

  • 猕猴桃皮的功效与作用(猕猴桃皮的功效与作用介绍)

    一项最新的研究表明,每天食用两颗猕猴桃与猕猴桃皮,就可以将睡眠品质提高百分之四十。猕猴桃皮中含有丰富的钙、镁及维生素C,有助于神经传导物质的合成与传递,此外,猕猴桃皮还含有其它水果中极为少见的钙质,具有稳定情绪及抑制交感神经的作用。猕猴桃皮富含抗氧化剂,猕猴桃皮具有抗癌、抗炎和抗过敏的功效。猕猴桃皮中抗氧化剂含量是果肉的三倍。食用猕猴桃皮最简单的方法就是将猕猴桃皮榨汁,过滤后饮用。促消化清洁肠胃。

  • 失业怎么交社保(失业后社会保险如何交)

    失业后社会保险如何交单位给你办理停保手续(想自己交社保的最好主动跟单位说明,否则他们可能不给你报停,只是冻洁帐户,这样可能就一直是在职且欠缴费的状态,单位缴费基数比个人缴费基数要高很多)你的社保关系由单位缴费转到个人缴费。

  • 货拉拉新能源车能进城区吗(新能源车跑货拉拉)

    接下来我们就一起去研究一下吧!货拉拉新能源车能进城区吗货拉拉运满满等货运平台如何月入过万跑货拉拉,什么车适合拉货?什么车接到的活最多?

  • 威海普通市民可以去黄码医院就医吗

    “黄码医院”的设置是为了加强疫情防控期间居民基本医疗保障,是指为隔离点和封控区、管控区核酸检测阴性但罹患其他疾病人员提供紧急救治服务的医院。“一点两区”核酸检测阴性但罹患其他疾病人员需要紧急救治服务时,需主动联系所在隔离点或所在社区,通过隔离点或社区预约“黄码医院”,由隔离点和社区工作人员通过专车“点对点”转运至“黄码医院”。普通市民罹患疾病仍然可到以上“黄码医院”正常就诊。

  • 桃胶怎么洗(洗桃胶的方法介绍)

    接下来我们就一起去研究一下吧!桃胶怎么洗首先将桃胶加水泡12小时。用手轻轻捞几颗在手上,手指微微张开,在水里抖动几下,粘在表面的杂质就会基本脱落。再仔细检查一下有没有顽固的杂质没有去掉,如果有就挑去它,然后把洗干净的桃胶就放入干净的盘里就行了。