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

关于解决网站 建设经费的请示优秀的界面设计作品及评析

关于解决网站 建设经费的请示,优秀的界面设计作品及评析,中国国际室内设计师网,网站数字签名Java虚拟机的类加载机制综述类的生命周期类加载器双亲委派模型---综述 我们编写的Java代码如何能在一个操作系统上运行呢#xff1f;一般来说#xff0c;我们使用javac命令将.java文件编译成.class文件#xff0c;也就是Java字节码文件#xff0c;然后由JVM将字节码文件加… Java虚拟机的类加载机制综述类的生命周期类加载器双亲委派模型---综述 我们编写的Java代码如何能在一个操作系统上运行呢一般来说我们使用javac命令将.java文件编译成.class文件也就是Java字节码文件然后由JVM将字节码文件加载到JVM内存中在运行时一方面由解释器将字节码解释为一行行的机器码来执行另一方面由即时编译器针对热点代码将其编译成机器码以获取更高的执行效率解释器和即时编译器的相互配合使程序几乎能够达到和编译型语言一样的执行速度。其中JVM加载字节码的过程就是类加载。类加载的目的从高处看是为了将字节码文件转换成内存中某种形式的Class数据结构程序可以通过这种数据结构构造出object而这个过程是在运行时进行的这也是Java动态扩展性的根基。从地处看一个Java类从被加载到内存中开始到卸载出内存为止它将经历加载、验证、准备、解析、初始化、使用和卸载这七个阶段其中验证、准备和解析可以统称为连接。而类加载只包括其中加载、连接和初始化这三个阶段。解析阶段是灵活的可以在初始化阶段之前进行也可以在初始化之后进行动态绑定。 类的生命周期 加载阶段是读取字节码文件将其转化为某种静态数据结构存储在方法区中并在堆中生成一个便于用户调用的java.lang.Class类型的对象的过程。 验证阶段是对字节码文件的规范校验主要包括文件格式验证、元数据验证、字节码验证和符号引用验证。其中文件格式的验证是发生在加载阶段的通过验证才能顺利加载。顺利加载后方法区才有该类的数据结构堆中也有该类的Class对象但并不代表该类可以使用还需要对该类的静态结构进行验证包括元数据与字节码验证主要是对其进行语法和语义分析保证其不会产生危害虚拟机的行为符号引用的验证发生在解析阶段。 准备阶段就是对类中定义的静态变量分配内存并初始化在JDK8以前hotspot使用永久代实现的方法区所以类的元数据、常量池、静态变量等数据存放在永久代而JDK8及以后hotspot使用元空间实现了方法区并将常量池和静态变量移到了堆上 解析阶段主要是将符号引用替换为直接引用那么什么是符号引用什么又是直接引用呢我的理解是如果一个类A中引用了类B但是B还没加载那么A中对于B的引用在解析阶段之前是不知道B的地址的所以A中会使用一个符号来代替B的地址直到A进行到解析阶段发现需要B的地址由此触发B的加载待到B加载完成之后A中对B的引用符号会被B的真实地址所替换那么那个替代符号就是指符号引用后面真实地址则是指直接引用。而对于多态B则可能是一个抽象类或接口此时B的实现并不明确那么其符号引用的替换则需要等到其运行调用时虚拟机调用栈中会得到具体的类型信息这时候再进行直接引用的替换这就是动态解析而前面就是静态解析。有时候解析发生在初始化阶段之后这就是动态解析用来实现后期绑定 初始化阶段是对类中的主动的资源初始化动作也就是执行对静态变量和成员变量赋用户值以及静态代码块的逻辑 类加载器 在类加载过程中用户主导的部分就是加载阶段获取二进制字节流部分和初始化阶段其余部分全由JVM主导则是符合开闭原则的。JVM规范中定义了两类类加载器启动类加载器和其他类加载器hotspot中则定义了四种类型的类加载器C实现的启动类加载器和Java实现的、继承自java.lang.ClassLoader的扩展类加载器、应用程序类加载器和用户自定义类加载器。其中启动类加载器无法作为对象被引用用于加载lib下面的包扩展类加载器用于加载lib/ext下的包应用程序类加载器用于加载classpath下的包用户自定义类加载器可以加载任意用户指定路径下的包 双亲委派模型 为什么要指定这么多类加载器呢不能只有有一个吗原则上可以只有一个的但不太适合扩展所以采用类似分类别类对于系统需要的则专门使用一个而对于用户扩展的则使用另一个或用户自己创建这就解决了扩展性问题但这又带来了一个新问题那就是对于同一个限定名的类不同类加载器会产生不同的类吗设计者给出的解决方案是不同类加载器加载同一限定名的类会产生不同的类因为xx但是如果我想让它是同一个呢这就要提到双亲委派模型了双亲委派模型是指对于加载请求子类会先委派给父类加载如果父类不能加载则再委派到子类加载这里实现的方式是通过组合而非继承。越核心的类库会被越上层的类加载器所加载而某限定名的类一旦被加载在被动情况下就不会再加载相同限定名的类了这样就有效避免了加载的混乱。关于双亲委派模型的四次破坏①是 — 类加载机制类的生命周期类加载器双亲委派模型 机制是指系统中各要素相互作用的过程和方式Java虚拟机的类加载机制是指被编译好的Java字节码Class文件在被加载到Java虚拟机内存中开始到形成可被Java虚拟机直接使用的Java类型为止的整个过程和相关方式所以要理解类加载机制就不可避免的要谈到Java类的生命周期与双亲委派模型了。 一个Java类型从被加载到虚拟机内存中开始到卸载出内存为止它将经历加载、验证、准备、解析、初始化、使用和卸载这七个阶段其中验证、准备和解析这三个阶段可以统称为连接。而类加载则包括指加载、连接和初始化这三个阶段。 在代码被编译器编译成字节码之后由相应的类加载器开始加载字节码首先会通过类的全限定名获取该类的二进制字节流然后将这个二进制字节流所代表的静态存储结构转化为方法区的运行时数据结构并在内存中生成一个代表该类的java.lang.Class对象作为该类各种数据的访问入口加载阶段。在获取到类的二进制字节流的同时会进行文件格式、元数据、字节码和符号引用的验证以确保该二进制字节流所包含的信息符合Java虚拟机的规范要求保证被当作代码运行后不会危害到虚拟机自身的安全验证阶段。验证通过之后会为类中定义的静态变量分配内存并初始化数值准备阶段负责分配内存和赋缺省值初始化阶段负责赋用户值。同时将常量池中的符号引用替换成直接引用解析阶段。然后用户就可以使用该类了使用阶段、卸载阶段。 参考 《深入理解Java虚拟机第三版》
http://www.dnsts.com.cn/news/89547.html

相关文章:

  • 做网站的准备什么软件wordpress 大神
  • 视频网站会员系统怎么做wordpress 代码 工具
  • 怎么才能把网站优化做好网站备案号中信息有变
  • 中国建设银行官方网站长沙网页设计工资高吗
  • 打开网站图片弹入指定位置代码梁园区官方网站
  • 招聘网站建设需求分析青岛做家纺的公司网站
  • 如何能让网站尽快备案通过做徽章的网站
  • 仲恺企业网站建设dedecms漏洞
  • 网站文化建设吴江公司网站建设电话
  • 模具网站建设什么免费网站可以链接域名
  • 网站关键词在哪里修改网站成功案例设计
  • 那些做兼职的小网站山东网络推广平台
  • 怎么制作网站模版光通信网站模板
  • 手机wap网站cms源码vi设计开题报告
  • 公司网站怎么做关键词嘉纪商正网站建设公司
  • 站长素材网站wordpress 主题窜改
  • 可以做代销的网站都有哪些品牌视觉设计包含什么
  • 做网站代理怎么样陕西室内设计公司排名
  • 四川省建设网站平台合肥高端网站设计
  • 优秀的网站建设托管上海网站建设代码
  • 重庆网站建设aiyom微官网和微网站有什么区别
  • 郑州网站建设有限公司建设电脑网站
  • 深圳最好用的网站设计wordpress 3.4 漏洞
  • 电子商务网站设计书单位网站源码
  • 建设部网站2015年第158号牛商网营销型网站建设
  • 自助下单网站咋做江苏省水建公司官网
  • 管家网站做视频网站要什么软件下载
  • 别人把我做的网站_我自己现在想把网站背景改掉_我要怎么改wordpress评论框文件
  • 红色系列的网站用J2ee怎么做视频网站
  • 做校园后勤管理网站得重点难点长沙市住房和城乡建设局网站