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

网站开发公司交易流程重庆秀山网站建设公司

网站开发公司交易流程,重庆秀山网站建设公司,电子商务网站建设一体化教案,网站上如何做相关推荐5.1 JVM体系结构 线程独占区-程序计数器#xff08;Program Counter Register#xff09; 程序计数器是一块较小的内存空间#xff0c;它可以看做是当前线程所执行的字节码的行号指示器#xff1b;在虚拟机的概念模型里#xff0c;字节码解释器工作时就是通过改变这个计数…5.1 JVM体系结构 线程独占区-程序计数器Program Counter Register 程序计数器是一块较小的内存空间它可以看做是当前线程所执行的字节码的行号指示器在虚拟机的概念模型里字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成如果线程正在执行的是一个Java方法这个计数器记录的是正在执行的虚拟机字节码指令的地址如果正在执行的是Native方法这个计数器值则为空Undefined。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 线程独占区-Java虚拟机栈Java Virtual machine Stacks Java虚拟机栈与线程生命周期相同。其描述的是Java方法执行的内存模型每个方法在执行的同时都会创建一个栈帧Stack Frame用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程就对应着一个栈帧在虚拟机中从入栈到出栈的过程。 局部变量表存放了编译器可知的各种基本数据类型boolen,byte,char,short,int,float,long,double对象引用reference类型和returnAddress类型指向了一条字节码指令的地址。 在这个区域中Java虚拟机规范规定了两种异常情况 如果线程请求的栈深度大于虚拟机所允许的深度抛出StackOverFlowError异常如果虚拟机栈可以动态扩展当前大部分Java虚拟机都可动态扩展只不过Java虚拟机规范中也允许固定长度的虚拟机栈并且扩展时无法申请到足够的内存就会抛出OutOfMemoryError异常。 线程独占区-本地方法栈Native Method Stack 本地方法栈与虚拟机栈所发挥的作用非常相似区别是虚拟机栈为虚拟机执行Java方法也就是字节码服务本地方法栈为虚拟机使用到的Native方法服务。由于虚拟机规范中没有对本地方法栈中的语言、使用方式与数据结构进行强制规定有的虚拟机入Sun HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一。本地方法栈会抛出StackOverflowError异常和OutOfMemoryError异常。 线程共享区-Java堆Java Heap Java堆是Java虚拟机所管理的内存中最大的一块在虚拟机启动时创建其唯一目的就是存放对象实例所有的对象实例以及数组都要在堆上分配但随着JIT编译器的发展与逃逸分析技术逐渐成熟所有的对象分配在堆上也渐渐不是那么绝对了。Java堆是垃圾收集器管理的主要区域现在收集器基本采用分代收集算法所以Java堆还可细分为新生代和老年代再细致点分为Eden空间伊甸园区From Survivor空间幸存区0To Survivor空间幸存区1等根据Java虚拟机规范的规定Java堆可以处于物理上不连续的内存空间中只要逻辑上连续即可如果堆中没有内存完成实例分配并且堆也无法再扩展时将会抛出OutOfMemoryError异常。 线程共享区-方法区Method Area 方法区用于存储已被虚拟机加载的类信息构造方法、接口定义、常量、静态变量、即时编译器编译后的代码运行时常量池等数据。所谓的方法区为永久代的说法仅仅是因为HotSpot虚拟机将GC分代收集扩展至方法区或者说使用永久代来实现方法而已。对于其他虚拟机是不存在永久代的说法的。运行时常量池是方法区的一部分用于存放编译器生成的各种字面量和符号引用一般还会存放翻译出来的直接引用。这部分内容将在类加载后进入方法区的运行时常量池中存放。当常量池无法再申请到内存时抛出OutOfMemoryError异常。 举例 String str1 abd;String str2 new String(abd);System.out.println(str1 str2);System.out.println(str1 str2.intern());输出falsetrue分析(1) String str1 abc str1指向常量池(2) String str2 new String(abc);str2指向堆内存对象二者地址不同所以str1 str2 结果为false;(3) 但是str2.intern()会把字符串值从堆内存移动到常量池中如果常量池存在则返回该值的地址这样一来str2和str1都是指向常量池的abc。 如下图所示 5.2 JVM详细架构图 5.3 JVM架构之运行时数据区 线程共享区包括堆、元空间线程私有区包括虚拟机栈、本地方法栈、程序计数器 运行时数据区 包括程序计数器(PC寄存器)、Java虚拟机栈、Java堆、方法区、运行时常量池、本地方法栈等等。 5.3.1 PC 寄存器也叫程序计数器 1、JVM支持多个线程同时运行每个线程拥有一个程序计数器是线程私有的用来存储指向下一条指令的地址。2、在创建线程的时候创建相应的程序计数器。3、执行本地native方法时程序计数器的值为undefined。4、是一块比较小的内存空间是唯一一个在JVM规范中没有规定OutOfMemoryError的内存区域。 5.3.2 虚拟机栈 栈是由一系列帧(Frame)组成(因此Java栈也叫作帧栈)是线程私有的。帧是用来保存一个方法的局部变量、操作数栈(java没有寄存器所有的参数传递使用操作数栈)、常量池指针、动态链接、方法返回值等。每一次方法调用创建一个帧并压栈退出方法的时候修改栈顶指针就可以把栈帧中的内容销毁。局部变量表存放了编译期可知的各种基本数据类型和引用数据类型、每个slot存放32位的数据long、double占两个槽位。栈的优点存取速度比堆快仅次于程序计数器。栈的缺点存在栈中的数据太小生存期是在编译期决定的缺乏灵活性。StackOverflowError异常当线程请求的栈深度大于虚拟机所允许的深度;OutOfMemoryError异常如果栈的扩展时无法申请到足够的内存。 5.3.3 Java堆 用来存放应用系统创建的对象和数组所有线程共享Java堆。GC主要管理堆空间对分代GC来说堆也是分代的。堆的优点运行期动态分配内存大小自动进行垃圾回收。堆的缺点效率相对较慢。 5.3.4 方法区的理解 对于HotSpotJVM而言方法区还有一个别名叫做Non-Heap非堆目的就是和堆区分开所以方法区看做是一块独立于Java堆的内存空间。方法区Method Area和Java堆一样是各个线程共享的内存区域方法区在JVM启动时被创建并且它的实际的物理内存空间和Java堆区一样都是可以不连续的方法区的大小和堆空间一样可以选择固定大小或者可扩展方法区的大小决定了系统可以保持多少个类如果系统定义了太多的类导致方法区溢出虚拟机同样会抛出内存溢出错误java.lang.OutOfMemoryError:Metaspace关闭JVM就是释放这个区域的内存。 HotSpot中方法区的演进 JDK1.6及之前有永久代静态变量存放在永久代上常量池在方法区了JDK1.7有永久代但已经逐步“去永久代”字符串常量池、静态变量移除保存在堆中JDK1.8及之后无永久代类型信息、字段、方法、常量保存在本地内存的元空间。但字符串常量池、静态变量仍在堆上。永久代、元空间二者并不只是名字改变了内部结构也调整了。 5.3.5 运行时常量池 运行时常量池是方法区的一部分 常量池是Class文件的一部分用于存放编译期生成的各种字面量和符号引用这部分内容将在类加载后存放到方法区的运行时常量池中 在加载类和接口到JVM中就会创建对应的运行时常量池 JVM为每个已加载的类型类或接口都维护一个常量池池中的数据项像数组一样通过索引访问的 运行时常量池中包含各种不同的常量包括编译期就已经明确的数值字面量也包括到运行期解析后才能获得的方法或字段引用。此时不再是常量池中的符合地址了这里换为真实地址 运行时常量池相对于Class文件常量池的另一重要特征是具备动态性String.intern() 党创建类或接口的运行时常量池时如果构造运行时常量池所需的内存空间超过了方法区所能提供的最大值则JVM就会抛出OOM异常。 5.3.6 本地方法栈 在JVM中用来支持native方法执行的栈就是本地方法栈。在JVM规范中并没有对本地方发展的具体实现方法以及数据结构作强制规定虚拟机可以自由实现它。在HotSopt虚拟机中直接就把本地方法栈和Java栈合二为一。 5.4 类加载器 作用加载class文件 加载器 1.虚拟机自带的加载器2.启动类根加载器Bootstrap classLoader:主要负责加载核心的类库java.lang.*等构造ExtClassLoader和AppClassLoader。3.扩展类加载器ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jat.4.应用程序加载器AppClassLoader:主要负责加载应用程序的主函数类。 图示 双亲委派机制 1类加载器收到类加载的请求 2将这个请求向上委托给父类加载器去完成一直向上委托直到启动类加载器根加载器 3启动加载器检查是否能够加载当前这个类能加载就结束使用当前的加载器否则抛出异常通知子加载器进行加载 4重复步骤3 ​ Class Not Found null java 调用不到 c/c写的调用不到 5.5 Java对象的实例化过程 java世界里面对象无处不在在创建对象的时候主要经过哪些步骤 5.5.1 对象的创建过程 类加载检查–分配内存–初始化零值–设置对象头–执行init方法 如图 1.类加载检查 虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用并且检查这个符号引用代表的类是否被加载,解析,初始化过,如果没有,那必须执行相应的类加载过程new 的指令对应到语言层面上讲: new关键词,对象克隆,对象序列化等 2.分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存,对象所需内存的大小在类加载完成后便可完成确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来3.初始化零值 内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值()不包括对象头 4.设置对象头(分不同的操作系统,如32位的,64位的) 初始化零值之后,虚拟机要对对象进行必要的设置,例如这个对象是哪个的实例,如何才能找到类的元数据信息,对象的哈希码,对象的GC分代年龄等这些信息,这些信息存放在对象的对象头Object Header之中 在HotSpot虚拟机中,对象在内存中的储存布局可以分为3块区域: 对象头(Header),实例数据(Instance Data)和对齐填充(Padding) HotSpot虚拟机的对象头包括两部分信息:第一部分: 储存对象本的运行时数据,如哈希码,GC分代年龄,锁状态标志,线程持有的锁,偏向线程ID,偏向时间戳等第二部分: 类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例如下是32 位的对象头 5.执行init()方法 对象按照程序员的意愿进行初始化;对应到语言层面来讲,就是属性赋值(注意:这是程序员自己赋的值)和执行构造方法 5.5.2 从Java源码到编译class到加载整体过程 对象创建的过程主要经过如下5步 判断类有没有被加载 如果没有被加载过(才开始加载类(就是类的加载过程)) 初始化 就是给一些变量进行初始化。 设置对象头(比较难理解)。 执行方法: 对对象进行赋值,和执行构造方法。 这里再从源码.java文件到编译的.class文件到加载详细描述第2步中的类的加载过程 加载.class文件的时候 window系统下调用底层的应该jvm.dll文件创建java虚拟机去创建一个引导类加载器(C实现的) 此时java虚拟机已经创建 此时会调用java实现的类加载器启动 加载loadClass方法加载真正的磁盘文件上面的字节码文件,再去发起调用main()方法,此时程序就启动了 类加载到使用整个过程有如下几步 加载 验证 准备 解析 初始化 使用 卸载 1、加载 ​ 在硬盘上查找并通过IO读入字节码文件使用到类时才会加载例如调用 类的main()方法new对象等等 2、验证 ​ 校验字节码文件的正确性 3、准备 ​ 给类的静态变量分配内存并赋予默认值 比如Boolean类型默认 false 这些默认值是java虚拟机自己规定的,如果是加final修饰直接就会变成常量 直接赋值了 4、解析 ​ 将符号引用替换为直接引用就是会将该阶段会把一些静态方法(符号引用比如 main()方法)替换为指向数据所存内存的指针或句柄等(直接引用)这是所谓的静态链 接过程(类加载期间完成)动态链接是在程序运行期间完成的将符号引用替换为直接 引用下节课会讲到动态链接(在类加载的时候可能不会加载 只有程序运行到这里才会去加载) 5、初始化 对类的静态变量初始化为指定的值执行静态代码块
文章转载自:
http://www.morning.krbjb.cn.gov.cn.krbjb.cn
http://www.morning.kuaijili.cn.gov.cn.kuaijili.cn
http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn
http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn
http://www.morning.mrqwy.cn.gov.cn.mrqwy.cn
http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn
http://www.morning.zrnph.cn.gov.cn.zrnph.cn
http://www.morning.tdnbw.cn.gov.cn.tdnbw.cn
http://www.morning.wchcx.cn.gov.cn.wchcx.cn
http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn
http://www.morning.fkyrk.cn.gov.cn.fkyrk.cn
http://www.morning.dmhs.cn.gov.cn.dmhs.cn
http://www.morning.lfdrq.cn.gov.cn.lfdrq.cn
http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn
http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn
http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn
http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn
http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn
http://www.morning.kaoshou.net.gov.cn.kaoshou.net
http://www.morning.czxrg.cn.gov.cn.czxrg.cn
http://www.morning.tfei69.cn.gov.cn.tfei69.cn
http://www.morning.ymwny.cn.gov.cn.ymwny.cn
http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn
http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn
http://www.morning.rzscb.cn.gov.cn.rzscb.cn
http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn
http://www.morning.mrbzq.cn.gov.cn.mrbzq.cn
http://www.morning.nrbqf.cn.gov.cn.nrbqf.cn
http://www.morning.mkrqh.cn.gov.cn.mkrqh.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn
http://www.morning.cfynn.cn.gov.cn.cfynn.cn
http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn
http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn
http://www.morning.gydth.cn.gov.cn.gydth.cn
http://www.morning.ttaes.cn.gov.cn.ttaes.cn
http://www.morning.sqhtg.cn.gov.cn.sqhtg.cn
http://www.morning.zrkp.cn.gov.cn.zrkp.cn
http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com
http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn
http://www.morning.xrsqb.cn.gov.cn.xrsqb.cn
http://www.morning.dshkp.cn.gov.cn.dshkp.cn
http://www.morning.trqsm.cn.gov.cn.trqsm.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.srzhm.cn.gov.cn.srzhm.cn
http://www.morning.xbmwh.cn.gov.cn.xbmwh.cn
http://www.morning.rkck.cn.gov.cn.rkck.cn
http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn
http://www.morning.zwndt.cn.gov.cn.zwndt.cn
http://www.morning.jqswf.cn.gov.cn.jqswf.cn
http://www.morning.rbjp.cn.gov.cn.rbjp.cn
http://www.morning.mrpqg.cn.gov.cn.mrpqg.cn
http://www.morning.qkqhr.cn.gov.cn.qkqhr.cn
http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn
http://www.morning.tymnr.cn.gov.cn.tymnr.cn
http://www.morning.bqmdl.cn.gov.cn.bqmdl.cn
http://www.morning.jcpq.cn.gov.cn.jcpq.cn
http://www.morning.lyhry.cn.gov.cn.lyhry.cn
http://www.morning.nytpt.cn.gov.cn.nytpt.cn
http://www.morning.yqgny.cn.gov.cn.yqgny.cn
http://www.morning.tktyh.cn.gov.cn.tktyh.cn
http://www.morning.krklj.cn.gov.cn.krklj.cn
http://www.morning.lhwlp.cn.gov.cn.lhwlp.cn
http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn
http://www.morning.plhyc.cn.gov.cn.plhyc.cn
http://www.morning.khtyz.cn.gov.cn.khtyz.cn
http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn
http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn
http://www.morning.ghwtn.cn.gov.cn.ghwtn.cn
http://www.morning.bgqr.cn.gov.cn.bgqr.cn
http://www.morning.ynwdk.cn.gov.cn.ynwdk.cn
http://www.morning.iiunion.com.gov.cn.iiunion.com
http://www.morning.kdnrc.cn.gov.cn.kdnrc.cn
http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn
http://www.morning.trjr.cn.gov.cn.trjr.cn
http://www.morning.dmchips.com.gov.cn.dmchips.com
http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn
http://www.morning.drfrm.cn.gov.cn.drfrm.cn
http://www.morning.rszt.cn.gov.cn.rszt.cn
http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn
http://www.tj-hxxt.cn/news/274928.html

相关文章:

  • 携程网站建设状况杭州电子商务网站开发
  • 制作商城网站模板php网站建设填空题
  • 社交网站的设计wordpress 4.8.2中文
  • wordpress个人网站赚钱创建大型网站
  • 平台开发多少钱优化网站平台
  • 技术支持 广州网站建设网站开发代码h5
  • 网站 建设平台分析报告网站建设教程试题
  • 后台网站设计淘宝运营学习
  • 企业网站平台如何做网络推广网站建设销售简历
  • 做企业内刊有哪些网站推荐看不到的网站
  • 宝盒 网站wordpress怎么发布文章
  • 蛋糕 网站 模板企业邮箱腾讯登录入口
  • 淮北网站开发公司南京环力建设有限公司网站
  • 关于网站建设项目创业计划书写作参考范文网站
  • 文化传媒有限公司网站建设网站目录权限设置 user
  • 网站换程序邯郸公司网站建设
  • 网站建设网络推广的好处wordpress主题开发博客
  • 东莞中高端网站建设网站制作教程:初学者
  • 电子商务网站开发实训总结报告西安seo外包行者seo
  • 互联网网站建设问卷调查wordpress字符图标
  • 网站的结构与布局优化设计网站推广的网站
  • 如何写好网站开发技术文档wordpress编辑器 插件
  • 全屏响应式网站图片制作器手机版
  • 电视盒子做网站服务器烟台网站建设 烟台网亿网络
  • 网站建设方案 预算南充房产管理网
  • 现在可以用的网站企业网站程序
  • 韩国网站怎么打开在机关网站建设会上讲话
  • 陕西省住房建设厅网站网站横幅代码
  • 杭州 网站定制网络安全知识
  • nginx怎么做多个网站wordpress如何备份数据库结构