《JVM修仙之路》初入JVM世界

《JVM修仙之路》初入JVM世界

博主目前正在学习JVM的相关知识,想以一种不同的方式记录下,娱乐一下

清晨,你睁开双眼,看到刺眼的阳光,你第一反应就是完了完了,又要迟到了。刚准备起床穿衣的你突然意识到不对,这好像不是我家呀。。。。。这是哪呀

你的名字是小王,是21世纪的一个普通程序员,过着996的生活。只是今天一睁眼,你发现你好像是穿越了。正在你迷迷瞪瞪的时候,一个和你年龄相近的小姐姐快速走进来,迅速拉起你的手,嘴里在嘟囔着,快走,再晚就赶不上J1大佬的表演了。

你心里更懵逼了,嘛是J1,还没等你问出这个问题,你们就已经到了表演现场。

台上表演的人时而吐出火焰,时而生成玄冰,台下传来阵阵的欢呼。这时的你更加笃定了穿越的想法。你转头问向小美,台上这些人是怎么做到的。小美苦笑一声,随后应道我也不清楚,这也是我第一次见到这些大佬现场表演。这时一位白发苍苍的老人开口道,这是因为他们的JVM中的内力足够深厚。
在这里插入图片描述
听到JVM这三字母的时候,你一下子懵逼了,心里想,嘛玩意,穿个越还离不开这东西,回忆着穿越前学这玩意学的恶心,面试完全还回去了。你转头看向老人,只见老人虽已两鬓斑白,但仍站得笔直,眼神中透漏着一股坚毅,一袭白衫,给人一种世外高人的感觉。你接着问,那我们普通人可以像他们这样吗?老人点点头道,可以是可以,不过要受常人所不能承受之苦。老人接着说,普通人因为内力太少,只可支撑一个本地方法栈,(java语言实现的方法有局限,对于一些底层的功能需要借助与C或C++实现的方法来实现,这些方法就称为本地方法,而为其方法运行时提供内存空间的部件就称为本地方法栈)只能支撑我们的日常生活。而台上这些J2的人已经将内力提升到更高层次的境界,从而可以生成火焰和玄冰。其主要原因就是他们JVM中拥有了虚拟机栈程序计数器

为了证实心中的想法,你再次问向老人,这俩是什么?你疑惑的看向老人。老人缓缓答道,虚拟机栈就是存储供这些技能消耗的内力的容器,并且会为每一个正在释放的技能单独分配一部分内力,其他技能就算内力释放完了,就不能侵占该技能的内力,这样将不同技能需要的内力分割出来可以避免走火入魔(内力就是内存,一个技能就是一个线程,正在释放的技能就是正在运行的方法,走火入魔就是线程不安全),并且技能释放完毕之后,该技能占用的内力可以在一段时间内返回。

你听完之后,进一步证实心中的想法,这里的技能机制和JVM是相似的。技能对应一个线程,内力就对应给该线程分配的内存。
在这里插入图片描述

你接着问,那这个程序计数器是干啥的,老者长吁一口气,想着,你这小子没完了,问个没完了。老者无奈的摇了摇头,然后说,这个我也不清楚,你有兴趣的话可以去极地剋哪里看看,可能有人可以解答你的疑问。看出了老者的不耐烦,你也只好扭过头去看台上大佬的表演。

在看了一会表演之后,你就和小美一起回去了,一整晚你都在琢磨,怎么让自己内力增加,进而拥有虚拟机栈和程序计数器,另外极地剋在哪里。

第二天一早,天才蒙蒙亮,你家的门被一脚踹开,这巨大的声响直接把你吓醒,等你朦朦胧胧中缓过神后,才看出这是小美。小美开口道,我知道极地剋在哪了。听到这你可就不困了,随便穿上衣服就让小美带着你去极地剋了。

一路上的风景变化很大,河流逐渐增多,并且越靠近极地剋,水中的鱼越多,越欢快。在经过了两天半的赶路之后,你们终于到了极地剋的大门前。

门是虚掩的,你和小美悄悄溜了进去,正进入,就看见一个人在熟练释放着技能,不同的是他们可以在释放一个技能的途中,可以停止释放另一个技能,而后又可以接着释放上一个技能。你看着其中一个人首先释放了一块寒冰之后,随后又吐出了一团火焰,两种强大的技能一结合,突然亮起白光,然后变成了水蒸气。
在这里插入图片描述
你心里想,属实大聪明。就在这时练功的这位大佬,发现了你俩,大吼一声,来者何人。

你赶忙解释出你来的目的,交流之后,这位大佬就给你解答了程序计数器的作用,其实程序计数器的作用就是记录技能的释放到哪一步了,并且每一个技能都会有一个单独的程序计数器,可以记录释放技能时下一步要干啥,并且可以使得在不同的技能之间切换时可以准确的接上下一步要干啥。另外,为了释放技能的准确性,我们会将一个技能又划分为不同的方法,每一个方法占用虚拟机栈的一部分空间,依次进行执行。

这时,你明白了,这就是为啥它可以释放出水蒸气的原因了。

这时,作为好奇宝宝的你,想问一下怎么才能提升自己的内力,大佬微微一笑,看向山下的河流

在这里插入图片描述

==============================================================================
内容中可能存在错误,希望大佬们指正,如果有好玩的想法的话,欢迎大家一起交流交流
在这里插入图片描述)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/87147.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化、智能化的酒店固定资产管理系统

酒店固定资产管理系统是一种专门为酒店行业定制的管理软件,可以帮助酒店管理者全面、准确地管理固定资产。该系统具有以下实际功能和特点:  资产库存功能:通过扫描二维码或手动输入条形码,完成酒店固定资产的有效总结&#xff0…

嵌入式系统存储体系

一、存储系统概述 主要分为三种:高速缓存(cache)、主存和外存。 二、高速缓存Cache 高速缓冲存储器中存放的是当前使用得最多得程序代码和数据,即主存中部分内容的副本,其本身无自己的地址空间。在嵌入式系统中Cac…

刘强东的低价武器再上膛

电商的光辉正撒向中国的每一个角落。 河北南部的一个村子,74岁的陈奶奶站在大门口,正等待着小哥送货上门,孤身在家的她平时吃的油盐酱醋,喝的奶粉豆浆,都由女儿崔丽丽在网上买。由于京东是村子里唯二可以上门的快递&a…

在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

Jenkins介绍 Jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 将项目代码的svn地址配置在Jenkins,就可以直接在Je…

RISC-V 中国峰会 | OpenMPL引人注目,RISC-V Summit China 2023圆满落幕

RISC-V中国峰会圆满落幕 2023年8月25日,为期三天的RISC-V中国峰会(RISC-V Summit China 2023)圆满落幕。本届峰会以“RISC-V生态共建”为主题,结合当下全球新形势,把握全球新时机,呈现RISC-V全球新观点、新…

Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

在启动oracle的服务OracleOraDb11g_home1TNSListener时,提示服务启动后又停止了。 解决方法: 修改oracle安装目录下的两个配置文件: 以上两个文件,对应的HOST的值,都改为127.0.0.1 然后再启动服务,启动成…

RISC-V公测平台发布 · 在SG2042上配置Jupiter+Octave科学计算环境

简介 JupyterHub是一个开源的共享计算平台,它为每个用户管理一个单独的 Jupyter 环境, 可以用于学生班级、企业数据科学小组或科学研究小组。它是一个多用户中心,可以生成、管理和代理多个单用户Jupyter笔记本服务器的实例。 GNU Octave是一…

C++中数组作为参数进行传递方法

文章目录 基础:数组作为函数形参示例:1、一维数组的传递(1)直接传递(2)指针传递(3)引用传递 2、二维数组的传递(1)直接传递(2)指针传递…

3d素材库素材资源平台大大节省老师备课时间

教育元宇宙相信大家有所耳闻,3D素材云库通过数字三维建模技术将现实中的物体、天气、灯光等1:1模拟还原到虚拟场景中,让人们在教育元宇宙平台中可视、可见、可感。 在元宇宙爆发的大背景下,3D互联网传播内容也将迎来一次全面升级&…

Bootstrap 源代码目录结构一览

目录 前言 Bootstrap 目录结构 Bootstrap 内容简介 Bootstrap 编译文件 CSS文件 | CSS 文件功能对比与清单 JS文件 | JS 文件功能对比与清单 Bootstrap 源码码目录 | 资源清单 前言 Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Ot…

Bigemap在路桥行业是怎么应用的?

选择Bigemap的原因: 奥维下架了,后来了解到的bigemap,于是测试了这款软件 使用场景: 下载影像、矢量路网做前期策划,下载完数据后导出cad ,做一些标注,最终出图下载等高线,作为前期选址依据 …

css background实现四角边框

2023.8.27今天我学习了如何使用css制作一个四角边框,效果如下: .style{background: linear-gradient(#33cdfa, #33cdfa) left top,linear-gradient(#33cdfa, #33cdfa) left top,linear-gradient(#33cdfa, #33cdfa) right top,linear-gradient(#33cdfa, #…