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

网站首页怎么做ps自学网站开发难吗

网站首页怎么做ps,自学网站开发难吗,纸牌网站建设,网站后台数据库管理各位读者好#xff01; 在JVM系列的上一篇文章中#xff0c;开发人员了解了Java虚拟机#xff08;JVM#xff09;及其体系结构。 本教程将帮助开发人员正确回答以下主题的问题#xff1a; ClassLoader子系统 运行时数据区 1.简介 在继续之前#xff0c;让我们看一下Ja… 各位读者好 在JVM系列的上一篇文章中开发人员了解了Java虚拟机JVM及其体系结构。 本教程将帮助开发人员正确回答以下主题的问题 ClassLoader子系统 运行时数据区 1.简介 在继续之前让我们看一下Java虚拟机及其基本特征。 1.1什么是Java虚拟机JVM Java虚拟机JVM是​​驻留在您的计算机上的抽象虚拟机并为Java字节码提供了运行时环境以供执行。 JVM可用于许多硬件和软件平台但是很少有Java开发人员知道Java运行时环境 JRE是Java虚拟机 JVM的实现。 JVM分析字节码对其进行解释然后执行相同的字节码以显示输出。 JVM的基本功能是执行已编译的.class文件即字节码并生成输出。 请注意 每个操作系统都有一个不同的JVM但是在所有操作系统上生成的字节码输出都是相同的。 这意味着在Windows操作系统上生成的字节码也可以在Linux操作系统上运行反之亦然从而使Java成为独立于平台的语言。 图1Java虚拟机概述 1.1.1 JVM做什么 Java虚拟机执行以下操作 加载所需的.class和jar文件 分配参考并验证代码 执行代码 为Java字节码提供运行时环境 1.1.2 JVM内部架构 下图显示了符合JVM规范的Java虚拟机的关键内部组件。 图2Java虚拟机架构 下面分别解释图2中所示的类加载器和运行时数据区域组件。 1.2 ClassLoader子系统 类加载器子系统是Java虚拟机的基本核心用于加载/读取.class文件并将字节码保存在JVM方法区域中。 该子系统处理动态类加载功能并执行三个主要功能即 加载 此组件处理将.class文件从硬件系统加载到JVM内存并存储二进制数据例如完全限定的类名直接父类名有关方法变量构造函数的信息等。在方法领域。 对于每个已加载的.class文件JVM会立即在堆存储器上创建一个类型为java.lang.class的对象。 请记住 即使开发人员多次调用一个类也只会创建一个类对象。 类加载器主要有三种类型 Bootstrap或Primordial ClassLoader 该类加载器负责加载rt.jar存在的内部核心Java类以及java.lang.*包中存在的其他类。 链接 此组件执行类或接口的链接。 由于此组件涉及新数据结构的分配因此它可能会抛出OutOfMemoryError并执行三个重要的活动 验证 这是检查类的二进制表示形式并验证生成的.class文件是否有效的过程。 初始化 此组件执行类加载的最后阶段在该阶段中所有静态变量都被分配了原始值并且静态块从父类执行到子类。 由于JVM是多线程的因此此过程需要仔细的同步并且某些线程可能会尝试同时初始化同一类或接口。 图3ClassLoader子系统概述 1.2.1 ClassLoader如何在Java中工作 Java中的类加载器以三个原则工作即委托 可见性和唯一性 。 图4Java中的类加载机制 代表团 据此 每当虚拟机遇到类时JVM都会检查是否加载了指定的.class文件。 可见性 据此 应用程序类加载器可以看到父类加载器加载的类但反之亦然例如如果类是由系统类加载器加载的而稍后再次尝试使用扩展类加载器显式加载相同的类则将抛出ClassNotFoundException 。运行。 唯一性 据此 由父类加载器加载的类不应该由子类加载器需要重新加载 1.2.2如何在Java中加载类 类加载器是分层的。 应用程序中的第一个类是借助static main()方法专门加载的。 所有后续类都可以通过静态或动态类加载技术来加载。 静态类加载 在这种技术中类是通过new运算符静态加载的 动态类加载 在这种技术中使用Class.forName()或loadClass()方法以编程方式加载类。 两者之间的区别在于前者在加载对象后初始化该对象而后者仅加载该类但不初始化该对象 1.3运行时数据区 如图5所示该子系统分为五个主要部分即 图5JVM运行时数据区 方法区域 此组件保存每个.class文件的类级别数据例如元数据常量运行时池静态变量方法的代码等。每个JVM只有一个方法区域并且在所有类之间共享。 默认情况下分配给该区域的内存是由JVM分配的或者可以根据计算需要增加。 以下异常情况与此区域相关即 如果方法区域不满足内存分配请求那么JVM会抛出OutOfMemory错误 堆区域 此组件是JVM内存的一部分所有对象及其对应的实例变量和数组都存储在JVM内存中。 该内存区域是在JVM启动时创建的并且只有一个堆区域跨多个线程共享因为存储在该区域中的数据不是线程安全的。 如果存储在堆内存中的对象没有引用则垃圾回收器 即自动存储管理系统回收该对象的内存 此区域中的对象永远不会显式释放。 以下异常情况与此区域相关即 如果计算需要的堆空间超过可用的堆空间那么JVM会抛出OutOfMemory错误 堆栈区域 该组件还是JVM内存的一部分所有临时变量都存储在该内存中。 该区域具有堆栈帧并为每个线程分配一个帧。 一旦线程执行完成该框架也会被破坏。 堆栈区域是线程安全的因为它不是共享资源并且分为三个子实体例如 局部变量数组虚拟机使用这些局部变量在方法调用时传递参数 以下异常情况与此区域相关即 如果线程处理要求虚拟机堆栈超出其允许的限制则JVM会引发StackOverflow错误 PC程序计数器寄存器 该组件保存当前正在执行的JVM指令的地址。 Java中的每个线程都有其自己的PC寄存器来保存当前执行指令的地址 本机方法堆栈 此组件用另一种语言编写并保存本机方法信息。 Java中的每个线程都有一个单独的本机方法堆栈。 以下异常情况与此区域相关即 如果线程处理需要本机堆栈超出其允许的限制则JVM会引发StackOverflow错误 这就是这篇文章的全部内容。 学习愉快 2.结论 在本教程中开发人员对虚拟机ClassLoader和Runtime Data Areas组件进行了概述。 您可以在“ 下载”部分中下载示例代码。 3.下载源代码 这是虚拟机ClassLoader和Runtime Data Areas组件的教程。 下载 您可以在此处下载本教程的源代码 JVM_Example 翻译自: https://www.javacodegeeks.com/2018/04/jvm-architecture-jvm-class-loader-and-runtime-data-areas.html
http://www.pierceye.com/news/489899/

相关文章:

  • 全总基层组织建设网站百度录入网站
  • 网站建设的实验步骤wordpress linux 建站教程
  • 哪个网站专门做邮轮旅游的加拿大28平台微信
  • 网站设置的用途wordpress 5.1 运行环境
  • 中小企业服务中心网站建设网站域名中文后缀
  • 龙武工会网站怎么做5173游戏交易网站源码
  • 网站建设设计时代创信好海南城乡和住房建设厅网站
  • 大连最好的做网站的公司崇义做网站
  • 圣弘建设股份有限公司网站上海图文设计有限公司
  • gta5资产网站正在建设零基础自学设计
  • 深圳专业制作网站公司吗网站信息化建设报送
  • 苏州网站建设运营推广网站一年多少钱?
  • WordPress国外主机湖北短视频seo营销
  • 南通网站建设电话设计一个网站要多少钱
  • 好的模板网站建设网站规划 时间
  • 昆明seocn整站优化网站建设如何报价
  • 网页设计模板免费网站WordPress生成网站地图
  • 做网站 侵权做外贸怎么看外国网站
  • 网站建设知识点的总结普通网站建设是什么
  • 杭州网站建设费用多少合肥高新城建设计院网站
  • 炫酷特效网站asa8.4 做网站映射
  • 郑州租赁房网站建设九江快乐城
  • 手机网站建站教育模板微信网站 教程
  • 网站的结构犀牛云做网站多少钱
  • 网站服务器用什么配置公司网站建设的视频教程
  • idea做网站网络营销与网站推广的区别
  • 建一家网站多少钱微信小程序在哪里查找
  • 东阳网站推广英文网站源码下载
  • 介绍湛江网站高端网站建设网站定制
  • 网站的特征包括哪些方面wordpress缓存插件 w3