问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JVM中的Hello World是如何运行的?

发布网友 发布时间:2022-05-29 17:42

我来回答

1个回答

热心网友 时间:2023-10-29 20:59

但是在一开始,我们考虑的只是这个语言是什么样的,我们如何更好的编码,却很少有人关心他内部是怎么运行的。看下面一个简单的hello world。packagecom.wordpress.kkarthikeyanblog;publicclassHelloWorld{publicstaticStringHELLOWORLD="HelloWorld";publicvoidprint(){System.out.println(HELLOWORLD);}publicstaticvoidmain(String[]args){HelloWorldhelloWorld=newHelloWorld();helloWorld.print();}}在使用javac工具编译了以上代码后,我使用下面的命令来运行这个程序。这时候JVM就启动了。在一开始,BoostrapperClassLoader 加载java.lang.package这个包,我内部的System Class Loader通过给定的classpath找到类"HelloWorld"。在定位到HelloWorld.class后,我将得到这个二进制流。然后我从这个class文件中提取出了一下信息。constants(例如文本、常数、类型、方法的符号引用)将被放到constant pool【在这个例子中包括HelloWorld class、方法、常量的符号】包、修饰符、静态变量【在这个例子中,"HELLOWORLD"这个静态变量】字段信息(名称、类型、修饰符)方法信息(名称、返回值类型、方法参数、修饰符、方法的字节码)【在这个例子中是print、void、public和字节码】ClassLoader的引用【装载这个类的classloader】引用class的类以上信息都被存在"Method Area"中。在装载完毕以上信息后,我(JVM)试着找出"public static void main(String [] args)"方法。我(JVM)中的每一个线程,除了共享"Method area"和"Heap Space"之外,他们还拥有自己的"stack"和"pc register"。然后在程序计数器的指引下,我开始执行下面这行:HelloWorldhelloWorld=newHelloWorld();我(JVM)将从constant pool中拿到HelloWorld的符号引用。然后查找Method area,获取到class信息,然后在Heap space中创建对象。现在程序计数器将会指到helloWorld.print();我(JVM)将从我自己的线程的stack中取出变量"helloworld"的引用,并且找到print()方法。在从Method Area中得到字节码信息后,我将方法"print()"压栈(push),现在我将开始执行print()方法。一旦print()方法执行结束,这个方法将出栈(pop up),将继续执行main()方法。一旦main()方法结束。main()方法将出栈,整个程序的执行也就结束了。总结一下以上所说,在JVM中:Method area-存放类信息Heap Space-只存放对象针对每一个线程来讲:Stack-包含一个一个的栈帧【例如方法栈】-它也存放指定方法的局部变量另外,除了这些,还有一个"Garbage Collector"(垃圾回收器)来释放那些无用的对象。最后,希望你看了此文能对JVM有更深一步的了解。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iPhone XR电量百分比怎么设置 Django如何使用网页嵌套网页(2023年最新解答) 社保之前工作缴了 后面工作不缴。自己要怎么续上?自己缴要缴多少?每... 壁挂炉数字不亮了怎么回事了解壁挂炉数字不亮的原因及解决方法_百度知 ... 单反长镜头和短镜头什么区别 ai的剪切蒙版快捷键是什么 自学当程序员需要哪些基础 程序员,需要学什么课程 想当一名出色的程序员数学必须要很好吗 华为路由器192.168.1.1怎样设置? 三叶草男鞋尺码和正常阿迪鞋尺码不一样吧,三叶草46是285 正常46是295,正常穿47 三叶草4 三叶草男鞋的问题G50968 想买双耐克或者阿迪达斯三叶草红色男鞋 有什么好看的推荐下.记得带上图片 adidas阿迪达斯三叶草男鞋怎么样?求介绍 阿迪达斯三叶草男鞋求鉴定 阿迪达斯男鞋 三叶草zx10000跑步鞋休闲慢跑鞋b35713 后面的标不一样吗 雾化玻璃都有什么尺寸的? 雾化玻璃需要注意些什么 雾化玻璃有什么效果? 九曲的九曲故事 欲寄鳞游,九曲寒波不溯流,有什么深层含义 游武夷泛舟九曲的诗意 游武夷泛舟九曲表达了作者怎样的情感? 游九曲上面的九个成语分别是什么 为什么正月十五要游九曲? 为什么要游九曲呢? 九曲桥上走一走寓意是什么? 上海九曲桥走过寓意是什么? 知道pka如何计算缓冲溶液酸碱体积 知道pka如何计算缓冲溶液酸碱体积 110V的电器比220V的电器更省电吗? 中药新药与临床药理论文的摘要 覃红的发表论文 110V的电器0.75安培等于多少瓦? 电器能用110V的电压吗 110V900w的电器耗电吗? 我是卫校中专,想读全日制大专有什么途径? 中专卫校怎样升大专呢? 海淘买了个110v的电器,在国内用买个转换头可以直接用吗?产品底部写着ac110v~60hz 15_百度问一问 卫校中专生怎么考大专 有个110v电器,家用220v电压,通过变压器,降压为110v,然后接插座,电器直接插在插座上可行吗? 在卫校毕业怎么可以自考大专 我现在在读卫校,怎样去考全日制的大专和大学?谢谢! 分手后复合的情侣,会比之前更恩爱吗? 卫校中专生如何考大专?我有希望吗? 在潮州卫校怎么进修大专学历? 我读的卫校,护理专业中专的。想读全日制的大专,请问怎么样报读大专,需要什么条件呢 110v能带起99瓦的电器吗? 110V~60Hz的电器可以在国内用吗??? 苹果6s plus充电怎么没有显示?