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

各大网站主打文风网站建设步骤的论文

各大网站主打文风,网站建设步骤的论文,吉林省建设通官方网站,青海省建设工程在哪个网站发布JVM内存分哪几个区#xff0c;每个区的作用是什么? java虚拟机主要分为以下几个区: JVM中方法区和堆空间是线程共享的#xff0c;而虚拟机栈、本地方法栈、程序计数器是线程独享的。 #xff08;1#xff09;方法区#xff1a; a. 有时候也成为永久代#xff0c;在该区内…JVM内存分哪几个区每个区的作用是什么? java虚拟机主要分为以下几个区: JVM中方法区和堆空间是线程共享的而虚拟机栈、本地方法栈、程序计数器是线程独享的。 1方法区 a. 有时候也成为永久代在该区内很少发生垃圾回收但是并不代表不发生GC在这里进行的GC主要是对方法区里的常量池和对类型的卸载 b. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。 c. 该区域是被线程共享的。 d. 方法区里有一个运行时常量池用于存放静态编译产生的字面量和符号引用。该常量池具有动态性也就是说常量并不一定是编译时确定运行时生成的常量也会存在这个常量池中。 2虚拟机栈: a. 虚拟机栈也就是我们平常所称的栈内存,它为java方法服务每个方法在执行的时候都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接和方法出口等信息。 b. 虚拟机栈是线程私有的它的生命周期与线程相同。 c. 局部变量表里存储的是基本数据类型、returnAddress类型指向一条字节码指令的地址和对象引用这个对象引用有可能是指向对象起始地址的一个指针也有可能是代表对象的句柄或者与对象相关联的位置。局部变量所需的内存空间在编译器间确定 d. 操作数栈的作用主要用来存储运算结果以及运算的操作数它不同于局部变量表通过索引来访问而是压栈和出栈的方式 e. 每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用持有这个引用是为了支持方法调用过程中的动态连接.动态链接就是将常量池中的符号引用在运行期转化为直接引用。 3本地方法栈 本地方法栈和虚拟机栈类似只不过本地方法栈为Native方法服务。 4堆 java堆是所有线程所共享的一块内存在虚拟机启动时创建几乎所有的对象实例都在这里创建因此该区域经常发生垃圾回收操作。 5程序计数器 内存空间小字节码解释器工作时通过改变这个计数值可以选取下一条需要执行的字节码指令分支、循环、跳转、异常处理和线程恢复等功能都需要依赖这个计数器完成。该内存区域是唯一一个java虚拟机规范没有规定任何OOM情况的区域。 heap 和stack 有什么区别 1申请方式 stack:由系统自动分配。例如声明在函数中一个局部变量 int b; 系统自动在栈中为 b 开辟空间 heap:需要程序员自己申请并指明大小在 c 中 malloc 函数对于Java 需要手动 new Object()的形式开辟 2申请后系统的响应 stack只要栈的剩余空间大于所申请空间系统将为程序提供内存否则将报异常提示栈溢出。 heap首先应该知道操作系统有一个记录空闲内存地址的链表当系统收到程序的申请时会遍历该链表寻找第一个空间大于所申请空间的堆结点然后将该结点从空闲结点链表中删除并将该结点的空间分配给程序。另外由于找到的堆结点的大小不一定正好等于申请的大小系统会自动的将多余的那部分重新放入空闲链表中。 3申请大小的限制 stack栈是向低地址扩展的数据结构是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的在 WINDOWS 下栈的大小是 2M也有的说是 1M总之是一个编译时就确定的常数如果申请的空间超过栈的剩余空间时将提示 overflow。因此能从栈获得的空间较小。 heap堆是向高地址扩展的数据结构是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的 自然是不连续的而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见 堆获得的空间比较灵活也比较大。 4申请效率的比较 stack由系统自动分配速度较快。但程序员是无法控制的。 heap由 new 分配的内存一般速度比较慢而且容易产生内存碎片,不过用起来最方便。 5heap和stack中的存储内容 stack在函数调用时第一个进栈的是主函数中后的下一条指令函数调用语句的下一条可执行语句的地址 然后是函数的各个参数在大多数的 C 编译器中参数是由右往左入栈的然后是函数中的局部变量。注意静态变量是不入栈的。 当本次函数调用结束后局部变量先出栈然后是参数最后栈顶指针指向最开始存的地址也就是主函数中的下一条指令程序由该点继续运行。 heap一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。 java类加载过程? Java类加载需要经历一下几个过程 1加载 加载时类加载的第一个过程在这个阶段将完成一下三件事情 a. 通过一个类的全限定名获取该类的二进制流。 b. 将该二进制流中的静态存储结构转化为方法去运行时数据结构。 c. 在内存中生成该类的Class对象作为该类的数据访问入口。 2验证 验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证: a. 文件格式验证验证字节流是否符合Class文件的规范如主次版本号是否在当前虚拟机范围内常量池中的常量是否有不被支持的类型. b. 元数据验证:对字节码描述的信息进行语义分析如这个类是否有父类是否集成了不被继承的类等。 c. 字节码验证是整个验证过程中最复杂的一个阶段通过验证数据流和控制流的分析确定程序语义是否正确主要针对方法体的验证。如方法中的类型转换是否正确跳转指令是否正确等。 d. 符号引用验证这个动作在后面的解析过程中发生主要是为了确保解析动作能正确执行。 e. 准备 准备阶段是为类的静态变量分配内存并将其初始化为默认值这些内存都将在方法区中进行分配。准备阶段不分配类中的实例变量的内存实例变量将会在对象实例化时随着对象一起分配在Java堆中。 3解析 该阶段主要完成符号引用到直接引用的转换动作。解析动作并不一定在初始化动作完成之前也有可能在初始化之后。 4初始化 初始化时类加载的最后一步前面的类加载过程除了在加载阶段用户应用程序可以通过自定义类加载器参与之外其余动作完全由虚拟机主导和控制。到了初始化阶段才真正开始执行类中定义的Java程序代码。 什么是类加载器类加载器有哪些? 实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。 主要有一下四种类加载器: 1启动类加载器(Bootstrap ClassLoader)用来加载java核心类库无法被java程序直接引用。 2扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。 3系统类加载器system class loader也叫应用类加载器它根据 Java 应用的类路径CLASSPATH来加载 Java 类。一般来说Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。 4用户自定义类加载器通过继承 java.lang.ClassLoader类的方式实现。
http://www.w-s-a.com/news/402735/

相关文章:

  • 档案馆网站机房建设做游戏网站打鱼
  • 网站建设平台 创新模式搭建好ftp服务器 如何通过网站访问
  • 苏州集团网站制作设计网页制作软件ai
  • 网站建设新手教程视频教程手帐风格wordpress主题
  • 做投标网站条件网站更改指定字段
  • mvc5 网站开发之美做印刷网站公司
  • 医疗网站建设精英微信网站用什么制作的
  • 银川网站设计联系电话地推加人2元1个
  • 龙华网站 建设深圳信科北京知名的网站建设公司
  • 怎么做qq刷赞网站搜盘 资源网
  • 微网站怎么做的好名字吗陕西省医院网站建设管理
  • 泉州seo-泉州网站建设公司温州企业自助建站系统
  • 网站建设属于什么费网站建设网络推广
  • 德州网站开发人员网站怎么才能被百度收录
  • wordpress网站怎么加小游戏乐山网站制作公司
  • 企业购 网站建设做兼职有哪些网站
  • 湖州网站做等保费用大型网站建站
  • 优创智汇高端网站建设网站设计工作流程
  • 什么网站可以学做西餐个人网站怎么做支付功能
  • 千户微建站平台做网站需要切图吗
  • 织梦cms 学校网站模板网站建设中的问题
  • 山东济南网站建设公司制作wordpress模板教程视频教程
  • 档案网站的建设怎样更新网站内容
  • 网站开发项目规划房地产趋势与前景
  • 网上网站开发这个百度的网站怎么做的
  • 南昌市建设局官方网站网龙网络公司地址
  • 自助建站平台源码公司网站谁负责做
  • 旅游的网站怎么做网站流量的主要来源有
  • 高新网站设计找哪家网络科技有限公司实习报告
  • 专业网站建设质量推荐网络销售是做网站推广