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

西安网站建设公司排行榜网站开发用什么写得比较好

西安网站建设公司排行榜,网站开发用什么写得比较好,湛江城乡建设网站,有创意的设计产品目录 ♫什么是JVM ♫JVM的运行流程 ♫JVM运行时数据区 ♪虚拟机栈 ♪本地方法栈 ♪堆 ♪程序计数器 ♪方法区/元数据区 ♫类加载的过程 ♫双亲委派模型 ♫垃圾回收机制 ♫什么是JVM JVM 是 Java Virtual Machine 的简称#xff0c;意为 Java虚拟机。 虚拟机是指通过软件模…  目录 ♫什么是JVM ♫JVM的运行流程 ♫JVM运行时数据区 ♪虚拟机栈 ♪本地方法栈 ♪堆 ♪程序计数器 ♪方法区/元数据区 ♫类加载的过程 ♫双亲委派模型 ♫垃圾回收机制 ♫什么是JVM JVM 是 Java Virtual Machine 的简称意为 Java虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统如JVM、VMwave、Virtual Box。  JVM 和其他两个虚拟机的区别是 VMwave与VirtualBox是通过软件模拟物理CPU的指令集物理系统中会有很多的寄存器而 JVM则是通过软件模拟Java字节码的指令集JVM中只是主要保留了PC寄存器其他的寄存器都进行了裁剪。  ♫JVM的运行流程 JVM 是 Java 运行的基础也是实现一次编译到处执行的关键那么 JVM 是如何执行的呢 我们知道程序在执行之前先要把java代码转换成字节码class文件而 JVM 首先需要把字节码通过类加载器ClassLoader把文件加载到内存中的运行时数据区Runtime Data Area 而字节码文件是 JVM 的一套指令集规范并不能直接交给底层操作系统去执行因此需要特定的命令解析器执行引擎Execution Engine将字节码翻译成底层系统指令再交由CPU去执行而这个过程中需要调用其他语言的本地库接口Native Interface来实现整个程序的功能这就是这4个主要组成部分的职责与功能。 ♫JVM运行时数据区 从上图我们可以发现运行时数据区划分成5个部分接下来我们就来看看他的内存布局。 ♪虚拟机栈 虚拟机栈是给 Java 代码使用的栈每个线程都会有一个虚拟机栈描述的是 Java 方法执行的内存模型每个方法在执行的同时都会创建一个栈帧Stack Frame用于存储局部变量表、操作数栈、动态链接、方法出口等信息 ①. 局部变量表 存放了编译器可知的各种基本数据类型(8大基本数据类型)、对象引用。局部变量表 所需的内存空间在编译期间完成分配当进入一个方法时这个方法需要在栈帧中分配多大的局部变量空间是完全确定的在执行期间不会改变局部变量表大小。简单来说就是存放方法参数和局部变量。 ②. 操作栈每个方法会生成一个先进后出的操作栈。 ③. 动态链接指向运行时常量池的方法引用。 ④. 方法返回地址PC 寄存器的地址。 ♪本地方法栈 Native Method Stack 中 Native 就表示 JVM 内部 C 写的代码就是给调用 Native 方法 JVM 内部的方法准备的栈空间。 ♪堆 整个 JVM 中最大的区域所有 new 出来的对象类的普通成员变量都是在堆上。 ♪程序计数器 程序计数器是一块比较小的内存空间记录当前线程执行到哪个指令可以看做是当前线程所执行的字节码的行号指示器。 如果当前线程正在执行的是一个 Java 方法这个计数器记录的是正在执行的虚拟机字节码指令的地址如果正在执行的是一个 Native 方法这个计数器值为空。 ♪方法区/元数据区 元数据区是用来存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据的。 注虚拟机栈、本地方法栈、程序计数器都是线程私有的一个线程有一个堆、元数据区是线程公有的一个进程里的所有线程共用一个。 ♫类加载的过程 Java类加载是将 .class 文件中的二进制数据读入到内存中并对数据进行校验、解析和初始化的过程。类加载来说总共分为以下几个步骤 ♩. 加载把 .class 文件找到读取文件内容 ♩. 连接         ①. 验证根据 JVM 规范检查 .class 文件是否符合规范         ②. 准备给类对象分配内存空间设置初始值基本数据类型设为为 0引用数据类型设为 null         ③. 解析将常量池内的符号引用替换为直接引用的过程也就是初始化常量的过程。字符串常量有一块内存空间存字符串的实际内容还有一个引用保存这块空间的起始地址类加载前字符串常量存储在 .class 文件中还没有内存地址此时这个引用记录的是字符串常量在文件中的”偏移量“符号引用在类加载后字符串常量才放到内存里有了内存地址才会将”偏移量“替换成内存地址直接引用 ♩. 初始化 真正对类对象里的内容进行加载加载父类、执行静态代码块 注java 程序运行后不会把所有类一次性都加载而是需要用到哪个再加载哪个 ♫双亲委派模型 类加载描述的是找到 .class 文件读取内容的过程而双亲委派模型描述的就是加载、找 .class文件的基本过程。了解双亲委派模型前我们得先了解下 JVM 默认提供的三种类加载器♩. BootstrapClassLoader负责加载标准库中的类java 规范要求提供的类无论哪种 JVM 都会提供 ♩. ExtensionClassLoader负责加载 JVM 扩展库中的类规范之外由 JVM 厂商提供的扩展功能 ♩. ApplicationClassLoader负责加载用户提供的第三方库/用户项目代码中的类  这三个加载器彼此存在“父子类”的关系 BootstrapClassLoader 相当于 ExtensionClassLoder 的父加载器ExtensionClassLoder 相当于 ApplicationClassLoder的父加载器。 双亲委派模型就是单加载一个类时首先从 ApplicationClassLoader 开始但 ApplicationClassLoader 会把加载任务交给父加载器 ExtensionClassLoader ExtensionClassLoader 又会把加载任务交给父加载器 BootstrapClassLoader BootstrapClassLoader 没有父加载器才开始搜索标准库目录的类找到了就加载没找到就交给子加载器 ExtensionClassLoaderExtensionClassLoader 搜索扩展库的目录找到了就加载没找到就交给子加载器 ApplicationClassLoaderApplicationClassLoader 搜索用户项目相关目录找到了就加载没找到就抛出异常。 注双亲委派模型的加载顺序确保了 BootstrapClassLoader 先加载ApplicationClassLoader 后加载可以避免因用户自己写的类导致 JVM 已有代码的混乱。 ♫垃圾回收机制 垃圾回收机制即 GC 主要是对堆进行释放的是以对象为单位进行回收的因此也叫死亡对象的回收。 要想回收垃圾首先得判断谁是垃圾常见的判断是否为垃圾的方法有两种 ♩.引用计数 给每个对象都分配一个计数器有引用指向它计数器加一有指向它的引用销毁计数器减一。 显然这个方法简单有效但还是存在缺点内存浪费的多且可能存在循环引用a 对象的属性指向 bb 对象的属性指向 a当 a 和 b 销毁时a 和 b 的引用计数仍为 1的问题。 ♩.可达性分析 java 里的对象都是通过引用指向来访问的通过遍历所有对象的引用指向就可以判断出某个对象可达不可达java 的做法就是通过可达性分析。 确认了哪个对象是垃圾就可以对垃圾进行回收常见的回收垃圾的做法有 ♩.标记清除 基本概念标记清除算法将垃圾回收分为两个阶段标记阶段和清除阶段。在标记阶段它从根节点开始遍历标记所有可达的对象。未被标记的对象被视为垃圾这些对象在清除阶段被回收。 优点标记清除算法实现简单不需要移动存活对象。缺点标记清除算法执行效率较低且清除后容易产生大量不连续的内存碎片这可能导致后续对象分配时找不到足够的连续内存空间而提前触发垃圾回收。 ♩.复制算法 基本概念复制算法将内存分为两块每次只使用其中一块。当一块内存用完时将还存活的对象复制到另一块上然后清理掉已使用的内存。 优点由于只处理其中一块内存区域复制算法运行速度较快且不会产生内存碎片。 缺点复制算法需要两倍的内存空间代价较高。同时如果对象的生命周期较长这种复制操作会导致效率低下。 ♩.标记整理 基本概念标记整理算法结合了标记清除和复制算法的优点。在标记阶段后将所有存活对象压缩到内存的一端然后清理边界以外的内存。 优点标记整理算法避免了标记清除算法的碎片问题也不需要复制算法那么多的内存空间。缺点标记整理算法实现较为复杂且移动对象的过程会产生额外的开销。 ♩.分代回收 基本概念分代收集算法基于这样一个事实大部分对象会在年轻时死亡。它将堆内存分为新生代和老年代不同年代采用不同的回收算法。新 new 出来的对象在伊甸区熬过一轮 GC 就通过复制算法来到了幸存区幸存也要经过周期性的 GC 考验如果通过考验就进入另一个幸存区没通过就释放掉当一个对象在两个幸存区来回拷贝很多次了后就进入老年区老年区偶而也要经历 GC 的考验如果没通过就通过标记整理算法释放掉。 优点分代收集算法通过将内存分区可以更高效地回收垃圾特别是针对新生代中大量短命的对象。缺点分代收集算法设计相对复杂需要根据不同代的特点选择合适的回收算法。 注JVM 就是基于分代回收算法回收垃圾的。
http://www.yayakq.cn/news/2599/

相关文章:

  • 网站建设平台seo网络优化平台
  • 备案网站建设书哈尔滨做网站的价格
  • 网站优化技巧做电影网站放抢先版
  • flash网站设计师怎样新建网站
  • 可以自己做网站服务器不网站备案更改
  • 教做详情页的网站wordpress小工具编辑
  • 持续推进网站建设php做网站难么
  • 成都彩票网站建设重庆市建设工程安全管理信息网
  • 和镜像网站做友链环保局网站建设
  • WordPress修改网站背景网站建设 php 企业网站
  • 网站企业备案资料长治怎么做平台软件
  • 信息网站模板广东建设信息网安全员查询
  • 游戏网站建设计划书网站灰色 代码
  • 长春网站制作费用2022年近期重大新闻事件
  • 英文网站定制公司新余公司做网站
  • 旅游网站设计总结网站建设平台合同
  • 提高企业网站的访问率淘宝网站边上的导航栏怎么做
  • 建设网站需要注意什么问题营销策划方案范文
  • 购物网站中加减数目的怎么做苏州建站免费模板
  • 网站后台自动退出十堰优化网站哪家好
  • 华为官方网站大连开发区天气预报
  • 黄页大全18勿看2000网站网站开发团队简介
  • python做视频网站网站关键词排名提高
  • 做的好的公司网站洛阳建设银行网站
  • 上海网站原型设计移动互联网站开发
  • 企业门户网站登录知名网站排名
  • 福田做商城网站建设哪家效益快天津建筑工程公司有哪些
  • 商务定制网站国外的服务器
  • 多合一建网站备案网站到期了怎么办
  • 甘肃新站优化本地wordpress模板编辑