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

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

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

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

    推荐阅读
  • 京剧花脸裘少戎(漫谈京剧裘派花脸艺术)

    今天我们谈到的方荣翔先生,是裘盛戎先生的大弟子,裘派著名的传承人。但是,到了裘盛戎先生,他就开始根据自身条件以及嗓音音色,对人物的理解等等情况,开始改革花脸的唱法和对音色的运用。裘派花脸从裘盛戎传到方荣翔,是不是更加失去了一些东西呢?

  • 丛林大作战正版下载(丛林大作战游戏下载)

    游戏主界面游戏开始画面使用技能画面游戏画面签到界面游戏系统:7.8分游戏的规则就是丛林法则——弱肉强食、适者生存,在《丛林大作战》里,所有真人角色都会化身为一只小动物,在不断进食进化成高级物种的情况下还要与其他动物互相吞食,最后活下来的才能成为这局游戏的王者。

  • 清柠火腿馒头夹(清柠火腿馒头夹怎么做)

    跟着小编一起来看一看吧!清柠火腿馒头夹馒头一只,火腿片三片,鸡蛋一个,沙拉汁适量。冷水放入鸡蛋,大火烧开后关火,盖上锅盖,让鸡蛋在锅里呆5分钟。依然是小火煎,过程中不停晃动过,防止馒头受热面不均匀而糊掉。馒头煎完后,装盘,像三明治那样叠起来。鸡蛋剥壳留下蛋黄。因为馒头片和火腿片都是煎的,所以使用清柠口味的沙拉汁,可以解腻。浇了沙拉汁很像一个荷包蛋。

  • 绿茶日常喝有坏处吗(被称为国饮的绿茶也有副作用)

    我们都知道绿茶有很多作用,比如:瘦身减肥、降血压、护心脏、预防癌症及艾滋病等等,那今天我们来说说绿茶有什么副作用。

  • 大量丝瓜怎么保存(大量丝瓜保存技巧)

    接下来我们就一起去了解一下吧!大量丝瓜怎么保存使用保鲜膜:未料理完的丝瓜,可用保鲜膜包住切断面并用橡皮筋轻箍做固定,再冷藏保存。以上两种方式皆建议于2~3天内食用完毕,以免丝瓜水分流失,而失去鲜度与口感。

  • zip怎么解压缩(zip如何解压缩)

    跟着小编一起来看一看吧!zip怎么解压缩上网搜索并下载应用程序“WINRAR”。下载完成后直接进行安装,其安装过程很简单。安装完成后,在需要打开的zip文件上右击,从弹出的菜单中选择以“打开方式”,在弹出的“打开方式”窗口中选择“WINRAR压缩文件管理器”,然后点击确定按钮。然后就会发现zip文件可以被打开了。

  • 蒸馏烧瓶加热需要垫石棉网吗(蒸馏烧瓶底部垫上石棉网的作用)

    蒸馏烧瓶加热需要垫石棉网,可以防止蒸馏烧瓶因受热不均匀而破裂,除试管外的其他玻璃仪器在加热时一般都要使用石棉网。石棉网主要是用于加热液体时,架在酒精灯上的三脚架上的铁丝网,由两片铁丝网夹着一张石棉用水浸泡后晾干的棉布状制品,是一种化学实验中常用的化学仪器。

  • 贝灵顿梗有胡子吗(百科贝灵顿梗)

    当时猎手超爱这一犬种,所以贝灵顿被认为是所有猎犬品种中最聪明和最快的。而且是低过敏性的,可以成为过敏人群的理想伴侣。重要比例身长略微大于肩高。躯干肌肉丰满,有明显曲度,体长略大于身高。四肢前肢前腿直,胸部间距大于脚部间距。身体明显畸形或行为失常的犬只均视为失格注意雄性犬有两个明显的睾丸完全悬于阴囊内。仅机能正常、身体健康且结构符合犬种标准的犬只才可用于繁殖。

  • 蓬松暄软小面包(软乎乎牛奶云朵小面包)

    特别喜欢这种小面包,奶香十足,超级软,你们一定要试试!高筋面粉的营养功效养心、益肾、除热、止渴主治脏躁、烦热、消渴、泄痢、痈肿、外伤出血及烫伤等。做菜好吃都有技巧,我的每道菜都有小妙招,大家搜索“豆果”可以直接查看我的菜谱!欢迎在下方留言分享您对这道美食的建议。

  • 学术期刊作者黑名单(323篇论文进了一次)

    自2016年起,这已是ICIMTech第6次举行,前5次会议地点均在印度尼西亚。今年2月24日,ACM决定撤回整个会议论文集和所有相关论文,因为“同行评审过程和本次会议论文集中发表的所有论文的真实性存在问题,整个会议的真实性受到了质疑”。这次撤稿事件近日经学术诚信网站“撤稿观察”披露。印尼建国大学公布的会议议程显示,19日上午,会议安排了3场主旨发言,19日、20日下午则分别召开平行会议。这一情况被反映给了ACM知识产权经理。