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

丽水网站建设费用如何自己弄一个网站

丽水网站建设费用,如何自己弄一个网站,低价刷赞网站推广,音乐网站开发技术人员配置文章目录 1. 虚拟机栈概述2. 局部变量表(Local Variables)3. 操作数栈4. 动态链接4.1 方法的调用#xff1a;解析与分配 5. 方法返回地址6. 栈的相关面试题 1. 虚拟机栈概述 每个线程在创建时都会创建一个虚拟机栈#xff0c;其内部保存一个个的栈帧#xff08;Stack Frame… 文章目录 1. 虚拟机栈概述2. 局部变量表(Local Variables)3. 操作数栈4. 动态链接4.1 方法的调用解析与分配 5. 方法返回地址6. 栈的相关面试题 1. 虚拟机栈概述 每个线程在创建时都会创建一个虚拟机栈其内部保存一个个的栈帧Stack Frame对应着一次次的 Java 方法调用是线程私有的。 作用主管 Java 程序的运行它保存方法的局部变量、部分结果并参与方法的调用和返回。 栈中可能出现的异常 如果采用固定大小的 Java 虚拟机栈那每一个线程的 Java 虚拟机栈容量可以在线程创建的时候独立选定。如果线程请求分配的栈容量超过 Java 虚拟机栈允许的最大容量Java 虚拟机将会抛出一个StackOverflowError 异常。如果 Java 虚拟机栈可以动态扩展并且在尝试扩展的时候无法申请到足够的内存或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈那 Java 虚拟机将会抛出一个 OutOfMemoryError 异常。 栈运行原理 在一条活动线程中一个时间点上只会有一个活动的栈帧。即只有当前正在执行的方法的栈帧栈顶栈帧是有效的这个栈帧被称为当前栈帧Current Frame与当前栈帧相对应的方法就是当前方法Current Method定义这个方法的类就是当前类Current Class。 执行引擎运行的所有字节码指令只针对当前栈帧进行操作。 如果在该方法中调用了其他方法对应的新的栈帧会被创建出来放在栈的顶端成为新的当前帧。 不同线程中所包含的栈帧是不允许存在相互引用的即不可能在一个栈帧之中引用另外一个线程的栈帧。 栈帧的内部结构: 局部变量表Local Variables操作数栈operand Stack或表达式栈动态链接DynamicLinking或指向运行时常量池的方法引用方法返回地址Return Address或方法正常退出或者异常退出的定义 并行每个线程下的栈都是私有的因此每个线程都有自己各自的栈并且每个栈里面都有很多栈帧栈帧的大小主要由局部变量表 和 操作数栈决定的 2. 局部变量表(Local Variables) 局部变量表也被称之为局部变量数组或本地变量表 一个数字数组主要用于存储方法参数和定义在方法体内的局部变量这些数据类型包括各类基本数据类型、对象引用reference以及 returnAddress 类型。由于局部变量表是建立在线程的栈上是线程的私有数据因此不存在数据安全问题局部变量表所需的容量大小是在编译期确定下来的并保存在方法的 Code 属性的 maximum local variables 数据项中。在方法运行期间是不会改变局部变量表的大小的。方法嵌套调用的次数由栈的大小决定。一般来说栈越大方法嵌套调用次数越多。对一个函数而言它的参数和局部变量越多使得局部变量表膨胀它的栈帧就越大以满足方法调用所需传递的信息增大的需求。进而函数调用就会占用更多的栈空间导致其嵌套调用次数就会减少。局部变量表中的变量只在当前方法调用中有效。在方法执行时虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后随着方法栈帧的销毁局部变量表也会随之销毁。 关于 Slot 的理解: 局部变量表最基本的存储单元是 Slot变量槽局部变量表最基本的存储单元是 Slot变量槽参数值的存放总是在局部变量数组的 index0 开始到数组长度-1 的索引结束。局部变量表中存放编译期可知的各种基本数据类型8 种引用类型referencereturnAddress 类型的变量。在局部变量表里32 位以内的类型只占用一个 slot包括 returnAddress 类型64 位的类型long 和 double占用两个 slot。byte、short、char 在存储前被转换为 intboolean 也被转换为 int0 表示 false非 0 表示 true。如果当前帧是由构造方法或者实例方法创建的那么该对象引用 this 将会存放在 index 为 0 的 slot 处其余的参数按照参数表顺序继续排列。 静态变量与局部变量的对比 我们知道类变量有两次初始化的机会第一次是在“准备阶段”链接执行系统初始化对类变量设置默认值另一次则是在“初始化”阶段赋予程序员在代码中定义的初始值。 和类变量初始化不同的是局部变量表不存在系统初始化的过程这意味着一旦定义了局部变量则必须人为的初始化否则无法使用。 补充说明 在栈帧中与性能调优关系最为密切的部分就是局部变量表。在方法执行时虚拟机使用局部变量表完成方法的传递。局部变量表中的变量也是重要的垃圾回收根节点只要被局部变量表中直接或间接引用的对象都不会被垃圾回收。 3. 操作数栈 操作数栈在方法执行过程中根据字节码指令往栈中写入数据或拿出数据即入栈和 出栈 某些字节码指令将值压入操作数栈push其余的字节码指令将操作数取出栈load比如执行复制、交换、求和等操作 操作数栈主要用于保存计算过程的中间结果同时作为计算过程中变量临时的存储空间。 另外我们说 Java 虚拟机的解释引擎是基于栈的执行引擎其中的栈指的就是操作数栈。 4. 动态链接 每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。(运行时常量池在方法区里面元空间)包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接Dynamic Linking。比如invokedynamic 指令 在 Java 源文件被编译到字节码文件中时所有的变量和方法引用都作为符号引用Symbolic Reference保存在 class 文件的常量池里。比如描述一个方法调用了另外的其他方法时就是通过常量池中指向方法的符号引用来表示的那么动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用#------具体名字。 4.1 方法的调用解析与分配 静态链接当一个字节码文件被装载进 JVM 内部时如果被调用的目标方法在编译期可知且运行期保持不变时这种情况下降调用方法的符号引用转换为直接引用的过程称之为静态链接 动态链接如果被调用的方法在编译期无法被确定下来只能够在程序运行期将调用的方法的符号转换为直接引用由于这种引用转换过程具备动态性因此也被称之为动态链接。 对应的方法的绑定机制为早期绑定Early Binding和晚期绑定Late Binding。绑定是一个字段、方法或者类在符号引用被替换为直接引用的过程这仅仅发生一次。 虚方法和非虚方法 如果方法在编译期就确定了具体的调用版本这个版本在运行时是不可变的。这样的方法称为非虚方法。 静态方法、私有方法、final 方法、实例构造器、父类方法都是非虚方法。其他方法称为虚方法。 虚拟机中提供了以下几条方法调用指令 普通调用指令 invokestatic调用静态方法解析阶段确定唯一方法版本invokespecial调用方法、私有及父类方法解析阶段确定唯一方法版本invokevirtual调用所有虚方法invokeinterface调用接口方法 方法重写的本质 找到操作数栈顶的第一个元素所执行的对象的实际类型记作 C。如果在类型 C 中找到与常量中的描述符合简单名称都相符的方法则进行访问权限校验如果通过则返回这个方法的直接引用查找过程结束如果不通过则返回 java.lang.IllegalAccessError 异常。否则按照继承关系从下往上依次对 C 的各个父类进行第 2 步的搜索和验证过程。如果始终没有找到合适的方法则抛出 java.1ang.AbstractMethodsrror 异常。 方法的调用虚方法表 在面向对象的编程中会很频繁的使用到动态分派如果在每次动态分派的过程中都要重新在类的方法元数据中搜索合适的目标的话就可能影响到执行效率。因此为了提高性能JVM 采用在类的方法区建立一个虚方法表 virtual method table非虚方法不会出现在表中来实现。使用索引表来代替查找。 每个类中都有一个虚方法表表中存放着各个方法的实际入口。 虚方法表会在类加载的链接阶段被创建并开始初始化类的变量初始值准备完成之后JVM 会把该类的方法表也初始化完毕。 如下图子类或者接口实现类对父类或者接口重写了或者实现了父类的方法那么虚方法表中存的就是子类的方法如果没有重写或者实现就是父类的方法。 5. 方法返回地址 被调方法返回值在局部变量表中存放的就是调用方法的pc寄存器该pc寄存器保存了调用方法应该执行的下一行字节码指令当前帧出栈后由此回到了调用方法对应的栈返回值保存在操作数栈中且在栈顶。 6. 栈的相关面试题 方法中定义的局部变量是否线程安全 具体问题具体分析。如果对象是在内部产生并在内部消亡没有返回到外部那么它就是线程安全的反之则是线程不安全的。
http://www.hkea.cn/news/14271301/

相关文章:

  • 网站开发流程人物WordPress添加在线商店
  • 网站建设前的分析公司概况了解贵阳营销网站建设公司
  • 建设企业网站进去无法显示wordpress node.js
  • 黑群晖wordpress建站服装网站建设策划书 百度文库
  • 平面设计工作室网站网站域名备案需要资料
  • 北京高端网站建设入门廊坊网络
  • 佛山免费自助建站模板免费注册126邮箱
  • 高端品牌网站建设兴田德润在那里重庆景点介绍
  • wordpress网站做成app建立门户网站的意义
  • 020网站模板Wordpress 防注入代码
  • 网站网页设计方案哪里建设网站不需要备案
  • 太原网站建设随州社交和门户网站的区别
  • 品牌网站开发特点常熟做网站公司
  • 网站页面自适应屏幕seo网站建设刘贺稳营销专家a
  • 宁乡网站建设点燃网络周口集团网站建设
  • 胶州网站建设平台阿里云服务器做网站
  • 做网站优化哪家好茂名手机网站建设公司
  • 如何仿别人网站的莫板专门做五金的网站
  • 网站建设服务优势百度识图在线
  • 建网站系统平台网站加手机建设png图标
  • 丹江口网站制作wordpress全屏主题
  • 网站建设的培训班物联网今天正式开网
  • WordPress仿站助手网站常用代码
  • php网站接入支付宝ps网站建设要知道的知识
  • 关于门户网站建设中国网络优化推广
  • 网站设计论文总结与展望企业管理软件市场规模
  • 上海工程建设信息网官网seo是指什么岗位
  • 网站设计报价表企业邮箱下载
  • 一般云主机可以做视频网站吗h5建站系统源码
  • 做暧动漫视频在线观看网站做网站买空间