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

石家庄行业网站建设企业邮箱正确的写法

石家庄行业网站建设,企业邮箱正确的写法,自学小程序开发需要学多久,个人网站开发计划书前言 本篇通过介绍JVM是什么#xff0c;认识JVM的内存区域的划分#xff0c;了解类加载过程#xff0c;JVM中垃圾回收机制#xff0c;从中了解到垃圾回收机制中如何找到存活对象的方式#xff0c;引用计数与可达性分析的方式#xff0c;再释放垃圾对象时使用的方式… 前言 本篇通过介绍JVM是什么认识JVM的内存区域的划分了解类加载过程JVM中垃圾回收机制从中了解到垃圾回收机制中如何找到存活对象的方式引用计数与可达性分析的方式再释放垃圾对象时使用的方式标准清除复制算法标准整理分代回收等等如有错误请在评论区指正让我们一起交流共同进步 文章目录 前言1. 什么是JVM?2. 认识JVM内存区域的划分3. 认识类加载过程4. 类加载中的双亲委派模型5. JVM中的垃圾回收机制5.1 GC是什么5.2.1 **第一阶段**找GC对象看对象是否存活 - 找垃圾5.2.2 第二阶段释放垃圾对象5.3 JVM的分代回收机制 总结 本文开始 1. 什么是JVM? JVM: Java虚拟机通过软件模拟具有硬件功能运行在一个完全隔离的环境中的完整计算机系统 2. 认识JVM内存区域的划分 JVM内存区域图示 问题查看变量的形态也就是根据代码判断属于堆栈还是方法区 ① 堆 成员变量(new 出来的对象存放其中) ② 栈局部变量维护方法直接的调用关系 ③ 方法区静态变量放类加载后的类对象, 被static修饰的 【注】变量处在什么区域与变量类型无关 线程私有的内存每个线程都有一个独立的程序计数器各条线程之间计数器互不影响独立存储 栈包括本地方法栈和虚拟机栈 本地方法栈给JVM内部本地方法使用 虚拟机栈给java代码使用程序计数器记录当前程序执行到那个指令了堆存储程序中创建的对象方法区存放类加载后的类对象- 静态变量 【注】线程共享堆与元数据区 线程私有栈(包括虚拟机栈本地方法栈)与程序计数器 例如 void function() {Student s new Student();}//s是引用类型是局部变量处在栈上而new Student()是对象处在堆上3. 认识类加载过程 类加载把 .class 文件加载到内存 得到类对象的过程 类加载过程 ① 加载找到.class文件读取文件内容 ② 验证验证.class文件是否符号规范要求.class文件有明确的数据格式 ③ 准备给类对象分配内存空间给类变量(static修饰的静态变量)分配的内存空间是未初始化默认全是0此时静态变量也是0 例如public static int value 66; //此时准备是给value分配空间初始化为0不是66 ④ 解析针对字符串常量进行初始化 初始化常量的过程 Java 虚拟机将常量池内的 符号引用 替换为 直接引用 的过程 符号引用处于相对位置字符串常量在.class文件中存在这时只知道他们之间的相对位置也就是符号引用 直接引用处于实际位置加载到内存中知道位置就是实际内存位置也就是直接引用 ⑤ 初始化针对类对象进行初始化初始化静态成员执行静态代码类有父类也需要加载父类 4. 类加载中的双亲委派模型 4.1 触发类加载时机 - 类加载是非必要不加载 1创建了类的实例 2使用类的静态方法/静态属性 3使用子类触发父类的加载 4.2 双亲委派模型 双亲委派模型作用在类加载阶段找.class文件 JVM加载类会使用类加载器这里简单介绍一下 JVM中内置的三个类加载器 ① BootStrap ClassLoader: 负责加载Java标准库中的类 ② Extension ClassLoader: 负责加载一些非标准的 Sun/Oracke扩展的库中的类 ③ Application ClassLoader: 负责加载项目中自己写的类和第三方库中的类 类加载过程图 5. JVM中的垃圾回收机制 5.1 GC是什么 GC是垃圾收集的意思帮助程序员自动释放内存的 JVM主要释放哪个区域 》释放 堆区域 5.2 垃圾回收的两个阶段 5.2.1 第一阶段找GC对象看对象是否存活 - 找垃圾 如何找垃圾Java中使用对象只能通过引用所以通过判断一个对象是否有引用指向就可以了所以引入下面两种方法 引用计数法给对象里安排一个额外空间保存一个整数表示该对象有几个引用指向Java中不使用 Python,PHP使用 图示 【注】 计数器作用引用增加计数器就增加引用减少计数器就减少当计数器为0时就认为该对象没有引用了认为时垃圾 引用计数的缺点 ① 浪费空间 ② 存在循环引用的情况会导致引用计数判定逻辑错误 可达性分析法Java中使用把对象之间的引用关系理解为一个树形结构从一些特殊起点出发进行遍历只要能遍历到的对象就是可达的把不能访问到的对象也就是不可达的当作垃圾 通过一个树形结构图来看一下 通过root引用作为起点就可以访问整个树的节点 可达性条件进行图示遍历需要有起点 ① 栈上的局部变量都是起点 ② 常量池中的引用对象 ③ 方法区中静态成员引用的对象 可达性分析的缺点 1消耗更多时间遍历过程消耗时间不能第一时间发现某个垃圾对象 2在遍历的时候如果过程中当前代码的对象引用关系变了就会产生麻烦 5.2.2 第二阶段释放垃圾对象 三种策略 1标记清除先标记出回收对象再直接释放垃圾对象内存 产生问题会产生大量内存碎片清理完垃圾对象产生大量内存碎片剩余的内存空间即使很多但都是碎片化的如果要申请一段连续的空间可能都申请不到 图示 2复制算法: 解决了内存碎片问题 复制算法过程把整个内存空间分成两段为了好描述过程这里把内存空间分为a,ba与b一样一次只使用一半如果使用a内存将a内存中不是垃圾对象的拷贝到没有使用的另一边b内存中然后再统一释放内存 图示复制算法 缺点1内存利用率比较低 2如果当前只要少部分垃圾大部分对象需要保留就需要花费高的复制成本 3标记整理 标记整理思想结合上述标记清除标记整理在其上在加上一个从后向前搬运元素的过程 标记整理图示 特点1解决了内存碎片的问题 2但从后向前搬运的开销比较大 5.3 JVM的分代回收机制 分代回收机制综合上述思想针对不同的情况使用不同的策略对垃圾进行回收 分代回收图示: 分代回收过程 1·新创建的对象存放到伊甸区 2伊甸区的对象经过第一轮GC会通过复制算法拷贝到生存区生存区分为两半大小相等每次只使用一半 在生存区中是垃圾对象就淘汰不是垃圾对象就复制到另一半一直重复上述过程 3对象在生存区经过若干轮GC年龄增长到 一定程度就会通过复制算法拷贝到老年代区 4进入老年代的对象年龄比较大针对老年代的GC扫描频次会降低消亡率就降低了 老年代某个对象是垃圾对象了进行标记整理法清除 5特殊情况对象非常大直接进入老年代区原因是大对象进行复制算法成本高其次大对象也不多 总结 ✨✨✨各位读友本篇分享到内容如果对你有帮助给个赞鼓励一下吧 感谢每一位一起走到这的伙伴我们可以一起交流进步一起加油吧
http://www.zqtcl.cn/news/734362/

相关文章:

  • 效果好的网站建设wordpress主题基础
  • html5建设摄影网站意义crm免费客户管理系统
  • win2008 建立网站网站策划书的撰写流程
  • 德泰诺网站建设百度网盘资源搜索引擎入口
  • 谁能给个网站谢谢wordpress 主题 后门
  • 学校网站建设目的seo教学免费课程霸屏
  • 会计公司网站模板微信网站如何制作软件
  • 烟台做网站多少钱.net网站做增删改
  • 什么网站专门做软件的深圳电商网站制作
  • 局域网做网站家装公司哪家比较好
  • 免费的行情软件网站在线使用wordpress视频分享
  • 内容平台策划书网站优化公司推荐
  • 怎么在阿里巴巴网站做公司wordpress伪静态404
  • 配置 tomcat 做网站网站建设用什么语言
  • 大型的营销型网站建设怎么选择网站建设公司
  • 怎么用网站源码建站友情链接交换方式有哪些
  • 国外免费网站服务器链接幼教网站建设分析
  • 做药品网站有哪些陕西专业网站建设价格
  • 网络公司做网站网站 服务器选择
  • 湖南省重点建设项目办公室网站河南省住建局官网
  • 建设网站企业网上银行登录入口官方论坛系统
  • 嘉定建设机械网站合肥制作网页设计
  • 外链网站有哪些空港经济区内的建设工程网站
  • 企业网站开发价阿里云快速备份网站
  • 大型电子商务网站建设成本ai网页生成
  • 网页播放视频 网站开发常用网站搜索引擎
  • 制作一个购物网站要多少钱做创意小视频的网站
  • 淇县网站建设软件定制流程
  • 17网站一起做网店代发流程wordpress悬浮 联系
  • 如何查网站外链快速开发平台 免费开源