当前位置: 首页 > news >正文

住宅与建设部网站龙口seo

住宅与建设部网站,龙口seo,英文网站一般用什么字体,杭州北京网站建设公司字节码文件的组成: 基础信息:魔数#xff0c;字节码文件对应的java版本号#xff0c;访问表示public final以及父类和接口 常量池:保存了字符串常量#xff0c;类或者是接口名#xff0c;字段名#xff0c;主要在接口中使用 字段:当前类或者是接口声明的字段信息 方法:当… 字节码文件的组成: 基础信息:魔数字节码文件对应的java版本号访问表示public final以及父类和接口  常量池:保存了字符串常量类或者是接口名字段名主要在接口中使用 字段:当前类或者是接口声明的字段信息 方法:当前类或者接口声明的方法信息字节码指令 属性:指的是类的属性源码的文件名以及类的列表 字节码文件中常量池的作用:避免相同的内容同时定义节省空间不仅会使文件变得非常大况且读取也会非常慢 可以看到字符串的引用存放的是7号的索引点击常量池的索引发现又是一个字面量 最后点击25就可以找到最终的字面量了 通过常量池节省字节码文件中的一部分空间避免同样的数据出现多次 但是为什么字节码文件再进行设计这一块的时候先通过字符串的引用找到字符串再来通过字符串找到字面量呢能不能直接通过字段来找到字面量呢因为JAVA里面的字符串解析并加载中需要将String类型加载到字符串常量池中 操作数栈是存放临时数据的地方两个数相加运算都要放在操作数栈最终结果都放在操作数栈中局部变量表是存放方法中局部变量的位置是在方法中声明的局部变量 下面就是局部变量表底层是依靠数组来实现的实际上是依靠你定义变量的顺序来声明数组下标的 istore_i:将操作数栈中的数据取出来放到局部变量表中的对应位置i那么到底应该放在哪一个位置呢应该在istrore后面加上一个数组下标比如说istore_1就会将操作数栈中的内容放到局部变量表中的1号位置局部变量表中的数据取出来之后就没了 iload_i:从局部变量表的i位置复制一份取出数放到操作数栈中最终操作数栈和局部变量表都是会有这个数据的 iconst_data:将data数据放入操作数栈中 int i0会拆解出iconst_0和istore_1这两个指令 i_add:将操作数栈中的顶部的两个数据进行相加并将结果放入到操作数栈中 iinc 1 by 1:将局部变量表中的1号位置加1 JVM是如何执行的 类加载器:加载class字节玛的内容到内存中 运行时数据区:负责管理JVM使用到的内存比如说创建对象和销毁对象 方法区:常量域信息只有HotSpot虚拟机才有 执行引擎:将字节码文件中的内容解析成机器码同时使用即时编译优化性能 本地方法接口:调用本地已经编译的方法比如说虚拟机中已经提供好的C/C的方法 翻译字节码:针对于字节码的指令进行解释执行 JIT编译器:针对于热点代码进行二次编译(将字节码中的字节码指令编译成机器指令)并将其缓存起来缓存在方法区中 类加载: 1)类加载器子系统负责从文件系统或者是网络中去加载class文件class文件在文件开头有着特定的文件标识 2)类加载器只是负责class文件的加载至于它是否可以运行那么则有执行引擎来决定 3)加载的类信息存放在一块称之为是方法区的内存空间除了类的信息以外方法区中还会存放运行时常量池等信息可能还会包含字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的部分映射) java虚拟机针对于class文件采用的是按需加载的方式也就是说当需要使用该类的时候才会将他的class文件加载到内存中生成类对象而且家在某一个类的class文件的时候JAVA虚拟机采用的是双亲委派模型会把请求交给父亲来处理是一种任务委派模式 在类加载中使用synchronized加锁向上委托检查向下加载 1)避免类的重复加载 2)保护程序安全防止核心API被随意篡改 在JVM中表示两个Class对象是否是同一个需要满足两个条件 1)两个类的完整类名必须完全一致全限定包名和类名 2)加载这个类的classloader实例对象必须相同 换句话说在JVM中即使这两个类对象Class都西昂来源于同一个Class文件悲痛一个虚拟几所加载但是只要加载他们的ClassLoader实例对象不同两个类对象也是不相同的 类加载的相关知识: 类的生命周期描述了一个类加载使用卸载的过程: 加载---链接---初始化----使用----卸载 1)loadding: a)根据包的全限定包名类名通过不同的渠道来找到对应的.class文件加载到内存中 本地的字节码文件动态代理生成的网络 b)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构就是将字节码的信息存放到方法区里面方法区就是用来存放已被加载的类信息常量静态变量 c)在方法区中生成这个类的类对象作为方法区中这个类的各种数据的访问入口 2)链接: 2.1)验证:class文件是以特定的文件符开始的校验内容是否满足JAVA虚拟机规范 a)文件格式验证:验证文件是否已特定字符开头就是以特定的二进制文件开头 b)原信息校验:就是对一些基本信息进行校验比如说类必须有父类 c)验证程序执行的语义:比如说方法中的指令执行中跳转到不正确的位置 d)符号引用验证:例如说有没有类中访问private修饰的方法 e)版本号检测:如果返回值是true代表验证成功 class文件的主版本号要大于一个常量代表所支持的最低版本号这个常量默认是45代表JDK1.0JDK的最高版本是52况且父版本号是0 2.2)准备:为静态变量分配内存并设置初始化值为0值是默认值的初值就是防止程序员写出脑残代码比如说给一个a没有赋初值如果程序员进行后续操作打印a 因为final修饰的静态变量在准备阶段就直接复制初始值了因为在编译期的时候直接就可以确定值 这里面不会针对于实例变量进行初始化实例变量会随着对象一起被分配到JAVA的堆里面 2.3)解析:解析所作的操作就是将常量池中的符号引用替换成直接引用 符号引用就是在字节码文件中使用编号来访问字符串常量池中的内容而直接引用不再使用编号而是使用内存地址来直接访问具体的数据 3)初始化阶段:执行静态代码块中的代码并且会给静态变量赋初值 其实本质上初始化就是在执行字节码部分的中的clinit部分的字节码指令 iconst:将数字放入到操作数栈中 putstatic:将操作数栈中的数据放到静态变量中 如果将代码进行颠倒clinit字节码指令执行的顺序和java中编写的顺序是一致的 下面来看一下哪几种方式会导致类的初始化: 1)当访问到一个类的静态变量或者是静态方法注意变量是final修饰的并且等号右边是常量不会触发初始化 2)调用Class.forName(String className)获取到这个类的类对象的时候 3)new一个该类的对象的时候 4)执行Main方法的当前类 添加-XX:TraceClassLoading参数可以打印出加载并且初始化的类 下面程序的输出结果是: 执行main函数况且类加载只会执行一次所以静态代码块也只会执行一次先进行类加载DACBCB clinit方法在特定的条件下不会出现如下面几种情况是不会执行初始化指令的也就不会生成clinit方法: 1)没有静态代码块况且没有静态变量赋值语句 2)有静态变量的声明但是没有赋值语句public static int a; 3)静态变量的定义使用final关键字况且这份变量会在准备阶段直接进行初始化 在上面的情况下不会执行初始化操作 1)直接访问父类的静态变量不会触发到子类的初始化子类的clinit方法执行前会先执行父类的clinit方法 2)声明一个类以后内部至少会存在一个这个类的构造器也就是一定会出现init方法 访问父类的初始化变量只会初始化父类因为a只是在父类中此时打印的是a1 第五步就是为了防止多个线程多次加载同一个类从下面的代码中而可以看到类加载中的静态代码块只会执行一次就相当于是一个加锁的过程一个类在内存中加载一次即可方法区在JDK1.8使用的是元空间会使用直接内存缓存起来了也就是说JAVA虚拟机在执行类加载的时候只会执行一次只会调用一次clinit()方法 非法的前向引用:当一个定义的变量出现在静态代码块之后是可以在静态代码块中赋值的但是是不可以打印这个静态代码块的 从下到上查找是否加载过再从上向下进行记载   BootStrap:启动类加载器  rt.jar:包含着java.lang中的String类这样就可以使用BootStrap类加载器来加载自己所扩展的类 1)将自己写的类打包成jar包 2)将自己写的jar包放在任意一个目录:C:/data 3)使用命令来进行扩展选择添加虚拟机参数 ext目录:通用但是不重要 Appclassloader:在用户自己写的类和第三方依赖jar包的字节码文件 如何打破双亲委派模型  1)使用PC寄存器存储字节码指令地址有什么用呢 为什么使用PC寄存器来记录当前线程执行的地址呢 CPU需要不停的进行切换各个线程这时候切换回来之后就得知道下一条从哪里开始继续执行JVM的字节码解释器就需要通过改变PC寄存器的值来确定下一条该执行啥样的字节码
http://www.zqtcl.cn/news/399057/

相关文章:

  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表
  • 延庆网站制作搜索引擎优化的基础是什么
  • 管理手机网站商城网站备案流程
  • 怀化买房网站网站广告js代码添加
  • 做网站 帮别人卖服务器wordpress主题多页面
  • 代理游戏网站潍坊市建设工程管理处网站
  • 大同推广型网站建设网站规划建设与管理维护第二版答案
  • 做网站需要代码吗户外媒体网站建设免费
  • 做什么网站国外做图标网站
  • 网站建设技术部职责门户网站工作总结
  • 用个人电脑做服务器建网站急切网头像在线制作图片
  • 企业网站制作教程浙江省住房和城乡建设厅网站
  • 一个网络空间如何做两个网站哪个网站兼职做设计比较好
  • jquery代码做的网站免费搭建网站模板
  • 铁路建设监理协会官方网站邯郸市网
  • 马鞍山集团网站建设客流分析系统公司
  • 淘客网站怎么做啊抖音怎么挂小程序赚钱
  • 在哪里申请网站域名美妆销售网站开发的目的
  • 网站自动跳转施秉网站建设
  • 聊城做网站的公司咨询学校网站模板 dedecms
  • 网站域名查询赣州网站设计有哪些
  • 网站设计做多宽150m网站空间流量大吗
  • 制作php网站用什么软件东莞东坑网站建设
  • 怎样做网站外部样式wordpress爱找主题
  • 自己搭建服务器做网站要多久问答网站如何优化
  • 网站用的服务器小程序拉新项目