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

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

时间:2023-07-01 作者: 小编 阅读量: 2 栏目名: 生活百科

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

    推荐阅读
  • 脸干燥起皮补水小妙招(脸干燥起皮补水小妙招简单介绍)

    脸干燥起皮补水小妙招化妆水保湿。敷完后的化妆棉也不要浪费哦,用来擦拭手部和手肘位置也能帮助保湿。保湿精华液无疑是保湿产品中的“王牌”,不仅能够帮助肌肤形成天然的保护膜,还能褪去脸上的小细纹。每次敷面膜前,如果想要保湿效果更好,那就先用一条热毛巾覆盖在面膜上,这样不仅有利于水分和营养的渗入,还能帮助舒缓干燥肌肤。但是美白效果的面膜就不适合用热毛巾敷啦,因为美白成分很容易被高温溶解掉。

  • 微信转错账怎么办教你一秒追回(微信转错账了怎么追回)

    微信转错账了怎么追回❣️微信支付已经走进了我们的生活,我们每天都要不停的用微信支付来买早餐,坐公交,买菜,付水电费❣️但是如果在买早餐的时候不小心想付8元,却付成了80元要怎么办呢?如果遇见了电信诈骗给骗子转了很多钱怎么。

  • 怎么看玉的品质好不好(怎样看玉的品质)

    要看这件和田玉好不好,结构是非常重要的,好的和田玉质地紧密细腻,肉眼不见颗粒、水线等,反之质地松散的,则品质不好。

  • 南京十朝历史文化园地址在哪里(南京十朝博物馆)

    南京十朝历史文化园地址:玄武区四方城1号。十朝历史文化园原址为南京钟山手表厂厂区,园区占地面积350亩,分为展馆区、文化经营区,商务办公区、户外景观区和演艺区等5个区域。展馆区以十朝历史为主线,通过图片、多媒体及体验性的配套设施,全面展现南京十朝历史的政治、文化、经济等发展脉络。

  • 电脑死机怎么处理(怎么办呢)

    下面更多详细答案一起来看看吧!电脑死机怎么处理点击右键,选择“启动任务管理器”,结束不需要的任务。可以在“进程”,点开“内存”,可以将内存占用率较高的强制结束。点击左下角“菜单”,点击“关机”,点击“重新启动”,无法执行菜单的话,可以按住Ctrl+Alt+Delete键。可以按电源键强制关机,可以重做系统消除问题。

  • 野外发现一块奇特石头(贵州一人发现一块奇怪的石头)

    奇石是大自然的馈赠,也是人类文明的见证。贵州一人在野外发现了一块奇怪的石头,层层叠叠的像是剥洋葱一样,专家称这可能是一亿年前的结核。在野外,各种形状各异的石头,你有没有见过长得跟“洋葱”一样的?这名男子日前在一座山中玩耍,无意中撞见一颗圆滚滚的“怪石”,出于好奇,他将其刨开后,发现里面的石头层层包裹,看起来就像是在剥洋葱。石头在被人发现之前,有很多令人惊奇的形态和色彩。

  • 2023年贵州规上工业增加值增速6%左右 高于全国平均水平

    1月16日,动静记者从贵州省工业和信息化工作会议上获悉,2023年贵州工业经济运行回升向好,工业对全省经济增长拉动作用进一步增强。据统计,2023年贵州省规模以上工业增加值增速达6%左右,高于全国平均水平。一年来,贵州发挥省市县三级领导领衔重大项目建设工作机制,挂图推进1500余个亿元以上项目建设,实施技术改造企业1100余户,宁德时代、奇瑞汽车等一大批重大项目建成投产。

  • 赖弘国离婚后的反应(赖弘国高调离婚为那般)

    赖弘国是一名美容医生,他从事的是无创或者微创美容行业,他所在的医院不是很大,由三位医生共同出资合伙,当年医院是在他和阿娇公布恋情后开业的,他在"分手文"中也表示,在诊所开业期间,阿娇为他忙前忙后,就像老板娘一样努力,他十分感动。是的,就是罗志祥的前女友周扬青,她不仅是这件经济公司的大股东,资料显示她还是公司的实际控制人,以及最终受益人。

  • 华为mate30pro投屏失败怎么办(mate30pro无线投屏失败)

    请下拉手机界面,在搜索框内搜索“WLAN+”,将该功能进行关闭。