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

w网站链接如何做脚注对网站和网页的认识

w网站链接如何做脚注,对网站和网页的认识,海南网页制作,电商美工培训机构Java中类的加载阶段 类加载 Java中的类加载机制是Java运行时环境的一部分#xff0c;确保Java类可以被JVM#xff08;Java虚拟机#xff09;正确地加载和执行。类加载机制主要分为以下几个阶段#xff1a; 加载#xff08;Loading#xff09;#xff1a;这个阶段#x…Java中类的加载阶段 类加载 Java中的类加载机制是Java运行时环境的一部分确保Java类可以被JVMJava虚拟机正确地加载和执行。类加载机制主要分为以下几个阶段 加载Loading这个阶段JVM会通过类加载器ClassLoader读取类的二进制数据.class文件并将其转换为方法区中的运行时数据结构。这个过程涉及到类的名称查找和字节码的加载。 验证Verification在链接阶段的第一步JVM会确保加载的类符合JVM规范没有安全问题。这个过程会检查字节码的格式是否正确确保类的结构符合规范比如确保所有方法调用都是有效的没有非法访问等。 准备Preparation这个阶段JVM会为类的静态变量分配内存并设置默认初始值。比如对于静态变量int x 10;JVM会在准备阶段为x分配内存并将其初始化为0因为10是一个编译时常量所以最终的值会在初始化阶段被设置 解析Resolution这个阶段涉及到将类、接口、字段和方法的符号引用转换为直接引用。符号引用是类文件中的一个名字而直接引用是指向内存中的地址。解析过程确保了所有的符号引用都可以被正确地解析到它们所引用的实际对象。 初始化Initialization最后JVM会执行类的构造器clinit()方法这会按照代码中的顺序来初始化静态变量和静态初始化块。在这个阶段静态变量会被赋予它们在代码中指定的值。 整个类加载过程是由类加载器负责的类加载器是Java运行时环境的一部分负责加载.class文件并确保类可以被JVM执行。类加载器还负责处理类之间的依赖关系确保在加载一个类之前它所依赖的类已经被加载。 Java类加载实例 public class App {public static void main(String[] args) {SpringApplication springApplication new SpringApplication();}| 加载 上述代码我简单改了下springboot的启动类当我们运行main方法之间类加载器会将App.class文件加载到JVM中当运行main方法执行第一段代码的时候就会将SpringApplication.class文件加载到JVM中简单流程如下图。 好了介绍完加载阶段我们思考一个小问题如果我们随随便便给一个文件改个后缀名未.class文件那JVM还会处理吗因此进入下一个阶段 验证阶段 上个阶段的问题答案肯定是否定的嘛Java虚拟机会对class文件进行的规范约束只有符合规范的文件才会被JVM处理。 通过验证以后的class文件才会进行处理于是进入下一个阶段 准备阶段 上述代码我们只有一个方法实际很多类会有一些类变量比如我们将上述代码改成 public class App {public static int starter;public static void main(String[] args) {SpringApplication springApplication new SpringApplication();}| 上述代码假设我们是正常编码确认App.class是规范的即通过了验证阶段便会进入准备工作。 这个阶段其实就是给这个“App”类分配一定内存空间给他的类变量分配内存并设置类变量的默认初始值如上述starter经过准备阶段会给一个’0‘的初始值 类变量使用的内存都在方法区中分配。(这里提到初始化的是类变量即static字段修饰实例变量会在对象实例化时随对象一起分配在Java堆中。) 整个过程如下图 解析阶段 这个阶段最最最主要的操作就是将符号引用替换为直接引用类或接口、字段、类方法、接口方法、方法类型、方法句柄和访问控制修饰符7类符号引用其实这部分实际都是由JVM底层处理的涉及到c的处理过程。先不讨论后面会抽一个专门说java与c的交互。 整个阶段就变成如下图 符号引用与直接引用 符号引用(Symbolic Reference) 是一种用来表示引用目标的符号名称比如类名、字段名、方法名等。符号引用与实际的内存地址无关只是一个标识符用于描述被引用的目标类似于变量名。符号引用是在编译期间产生的在编译后的class文件中存储。 直接引用Direct Reference是程序运行时JVM生成的直接指向内存中对象或方法的实际地址的引用。这个过程涉及到查找类、接口、字段、方法等在内存中的实际位置类似0xfbe007。 这稍微注意下上述三个阶段我们会统一称之为链接阶段。 链接阶段需要重点注意的是准备阶段在这个过程中我们给加载进来的内分配好了内存空间类的变量也同样分配好了内存空间并且给了默认初始值。这里再次强调一下后续会讨论分配内存空间时候各种情况大家也可以自行思考下例如内存不够了咋整多个人分配的地址重复了又该咋整呢 初始化 上述我们在类加载的准备阶段给类的变量分配好内存空间后给类给的是默认值而在初始化阶段就会正真执行类初始化代码 public class App {public static int starter config.getStarter(); public static ListEnableAutoConfiguration autoConfigurations;static {loadSpringFacotories();}public static void loadSpringFacotories(){autoConfigurations new ArrayList();}public static void main(String[] args) {SpringApplication springApplication new SpringApplication();}} 所以上述代码如果我们分不同阶段去获取starter其实会得倒不同的值在加载进行到准备阶段我们得到的只会是0而当我们在初始化后再去获取starter会获得到config.getStarter()方法返回的值。 当然这个阶段也会执行静态代码块里的方法上述代码中的loadSpringFacotories()方法也是这个阶段调用的。 那什么时候会初始化一个类呢通常有以下几个场景 1、new的时候会将new后面的class文件从最开始的加载到初始化整个完整的过程都会执行一边然后在实例化一个对象出来。 2、当执行一个入口函数如main(),就会把main所在的主类立马初始化 3、初始化一个类的时候发现他的父类没有初始化那么就会先初始化他的父类。 结合例子我们最终完成整个加载过程的介绍和第一个章节的知识点介绍大家可以对比画出自己的图。
http://www.w-s-a.com/news/233958/

相关文章:

  • 网站开发实习计划模板微营销手机
  • 网站设计与制作是做什么工作免费封面设计在线制作生成
  • 网站开发的教学课程网站广告调词软件
  • 进下加强新闻宣传网站建设入门 做网站 书籍
  • 电商网站主题photolux wordpress
  • 周口专业做网站公司深圳市宝安区松岗街道邮政编码
  • 上海企业网站推广方法网络营销策划方案框架
  • 一流的常州网站建设机械加工网报价
  • 上海响应式网站建设公司seo课程总结
  • vs网站开发教程昆山普立斯特做的有网站
  • 柳州网站seo网站swordpress 输出内容
  • 网站设计制作电话多少网站流量下降
  • 沈阳做网站推广的公司唐山哪家做网站好
  • 国外著名网站建设公司WordPress破解怎样主题修复
  • 网站建设济南云畅网络广州电力建设有限公司网站
  • 查看公司信息的网站思特奇是外包公司吗
  • 制作企业网站的目的啥都能看的浏览器
  • 做网站可以用哪些语言如何进行网站运营与规划
  • 做效果图网站有哪些电子商城网站制作数据库
  • 小刘网站建设wordpress调用php文件上传
  • 建设银行对账网站网络营销广告案例
  • 做网站开票是多少个点的票wordpress扫码提交数据库
  • 织梦网站改版需要怎么做企业网站备案管理系统
  • 大规模网站开发语言宁夏建设职业技术学院网站
  • 寻花问柳专注做一家男人爱的网站北京展台设计制作
  • 中卫网站设计做自己的卡盟网站
  • 广州网站推广自助做网站人家直接百度能搜到的
  • 电子商务网站建设目标及利益分析安徽建设厅网站施
  • 制作网站策划书网站建设公司的性质
  • 哪个网站可以做免费宣传简单的网页设计网站