当前位置: 首页> 健康> 母婴 > 泰安招聘网_疫情防控措施_安徽seo优化规则_对网站和网页的认识

泰安招聘网_疫情防控措施_安徽seo优化规则_对网站和网页的认识

时间:2025/7/12 15:03:06来源:https://blog.csdn.net/Brave_heart4pzj/article/details/142461570 浏览次数:0次
泰安招聘网_疫情防控措施_安徽seo优化规则_对网站和网页的认识

文章目录

  • 一、内存结构图
  • 二、案例解读
  • 三、工作流程
  • 四、特点

一、内存结构图

在这里插入图片描述

二、案例解读

我们使用javap对字节码进行反编译,来看下程序计数器怎么体现的。

IDEA写一个简单的Java代码
在这里插入图片描述
反编译命令
javap -verbose InitTest.class

$ javap -verbose InitTest.class
Classfile /E:/workspace/JVMDemo/out/production/chapter01/com/rh/java/InitTest.classLast modified 2024-9-23; size 491 bytesMD5 checksum 56fd724ef01f37a20b2872002edd43cdCompiled from "InitTest.java"
public class com.rh.java.InitTestminor version: 0major version: 52flags: ACC_PUBLIC, ACC_SUPER
Constant pool:#1 = Methodref          #4.#23         // java/lang/Object."<init>":()V#2 = Fieldref           #3.#24         // com/rh/java/InitTest.a:I#3 = Class              #25            // com/rh/java/InitTest#4 = Class              #26            // java/lang/Object#5 = Utf8               a#6 = Utf8               I#7 = Utf8               <init>#8 = Utf8               ()V#9 = Utf8               Code#10 = Utf8               LineNumberTable#11 = Utf8               LocalVariableTable#12 = Utf8               this#13 = Utf8               Lcom/rh/java/InitTest;#14 = Utf8               main#15 = Utf8               ([Ljava/lang/String;)V#16 = Utf8               args#17 = Utf8               [Ljava/lang/String;#18 = Utf8               i#19 = Utf8               j#20 = Utf8               k#21 = Utf8               SourceFile#22 = Utf8               InitTest.java#23 = NameAndType        #7:#8          // "<init>":()V#24 = NameAndType        #5:#6          // a:I#25 = Utf8               com/rh/java/InitTest#26 = Utf8               java/lang/Object
{public int a;descriptor: Iflags: ACC_PUBLICpublic com.rh.java.InitTest();descriptor: ()Vflags: ACC_PUBLICCode:stack=2, locals=1, args_size=10: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: aload_05: bipush        87: putfield      #2                  // Field a:I10: returnLineNumberTable:line 3: 0line 4: 4LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  this   Lcom/rh/java/InitTest;public static void main(java.lang.String[]);descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=4, args_size=10: bipush        102: istore_13: bipush        205: istore_26: iload_17: iload_28: iadd9: istore_310: returnLineNumberTable:line 7: 0line 8: 3line 9: 6line 10: 10LocalVariableTable:Start  Length  Slot  Name   Signature0      11     0  args   [Ljava/lang/String;3       8     1     i   I6       5     2     j   I10       1     3     k   I
}
SourceFile: "InitTest.java"

类似下图,最左边的序号,我们可以简单的理解为jvm指令的内存地址。
在这里插入图片描述

三、工作流程

Java程序的运行流程大概如下
解释器,通过程序计数器,拿到指令的内存地址,从而获取到需要执行的指令
然后,解释器把指令翻译成机器码,CPU才能执行对应的机器码。
简单的理解为,当前程序运行到哪一行代码,就看程序计数器记录的指令地址。

而在物理硬件上,程序计数器是通过什么实现的了?
是通过CPU中的寄存器部分实现的效果,寄存器是CPU中运行速度最快的部分。

四、特点

1、线程私有的
每个线程都会有个属于自己的程序计数器。

2、不会存在内存溢出异常

关键字:泰安招聘网_疫情防控措施_安徽seo优化规则_对网站和网页的认识

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: