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

北京大学 讣告上海短视频seo优化网站

北京大学 讣告,上海短视频seo优化网站,微企点建站怎么样,哪个网站可以学做包子在 《深入理解 Java 虚拟机》一书中,作者将运行时数据区和垃圾收集算法放在开头章节,说明了这两个知识点是进一步学习 JVM 的基础知识点,相比后续的 垃圾收集器和 JMM,它也更加的简单。 运行时数据区 运行时数据区是《Java 虚拟…

在 《深入理解 Java 虚拟机》一书中,作者将运行时数据区和垃圾收集算法放在开头章节,说明了这两个知识点是进一步学习 JVM 的基础知识点,相比后续的 垃圾收集器和 JMM,它也更加的简单。

运行时数据区

运行时数据区是《Java 虚拟机规范》规定的,Java 虚拟机在运行 Java 程序的过程中划分的数据区域。分为程序计数器、虚拟机栈、本地方法栈、方法区和堆共五个区域。可以从三个方面来总结这些区域,即区域是用来存储什么数据的?区域是线程共享的还是私有的?区域会抛出哪些异常。

  1. 程序计数器

    • 存储线程执行字节码的行号
    • 线程私有
  2. 虚拟机栈

    • 存储 Java 程序普通方法的调用栈
    • 线程私有
    • 可能抛出 StackOverFlowError 和 OutOfMemoryError
  3. 本地方法栈

    • 存储 Java 程序 native 方法的调用栈
    • 线程私有
    • 可能抛出 StackOverFlowError 和 OutOfMemoryError
  4. 方法区

    • 存储加载的类型信息、运行时常量池
    • 线程共享
    • 可能抛出 OutOfMemoryError
    • Java 虚拟机管理的最大的一块内存,用来存储对象实例
    • 线程共享
    • 可能抛出 OutOfMemoryError

垃圾收集算法

Java 语言和 C/C# 语言最大的区别就是 Java 语言会自动分配和回收内存,内存的分配暂且不聊,内存回收是由 JVM 中的垃圾收集器来提供支持的。在 JVM 中,内存分配的基本单位是对象,所以内存回收也是以对象为单位来回收的。

开发人员在设计垃圾收集器时,为了简化问题,将垃圾收集的过程分成了两步:

  1. 标记哪些对象需要回收;
  2. 怎么回收这些对象。

标记内存中哪些对象需要回收的算法有两种,分别是引用计数器法和可达性分析法。

引用计数器法

引用计数器法指的是在每个对象中维护一个计数器,当有一个地方引用它时计数器就加一,当一个引用失效时计数器就减一,当计数器为 0 的时候判定对象是垃圾内存,需要回收。

引用计数器法需要解决循环引用的问题,即两个对象互相引用,其他再没有地方引用它们,这时它们应该算是需要被回收对象才对,但是它们的引用计数器却不是 0。

可达性分析法

可达性分析法指通过一系列被称为 “GC Roots” 的根对象作为起始节点集,从这些节点开始根据引用关系向下搜索,在搜索过程中能够遍历到的对象就是存活的对象,没有遍历到的对象就是垃圾对象,需要回收。

值得注意的是,所有的垃圾收集器使用的判断对象是否可回收的算法都是可达性分析法。因为可达性分析法没有循环引用的问题,而要解决引用计数器法的循环引用问题,带来的复杂性和性能消耗可能会得不偿失。

标记-清理算法

确定了哪些内存可以回收之后我们需要确定怎么回收,在 Java 虚拟机发展过程中出现过许多垃圾收集算法。

标记-清理算法正如它的名字一样,它分为标记和清理两个步骤,其中标记是使用前面介绍的可达性分析法将可回收对象标记出来,标记结束后,统一回收掉所有的被标记对象。

标记-清理算法会造成大量不连续的内存碎片,因为给对象分配内存需要连续的内存空间,如果空间碎片太多的话会出现当前总的内存可用空间大于需要分配的空间,但是连续的内存可用空间都小于需要分配的内存,从而导致 JVM 需要提前触发垃圾收集动作。

标记-复制算法

标记-复制算法将内存按容量划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了之后就将还存活的对象复制到另外一块内存中,然后把一块的内存一次清理掉。

因为每次垃圾收集之后都会将存活对象复制到另外一块内存区域,这里的复制和后续的新对象分配都是从内存区域的开头开始分配的,所以不会存在空间碎片的问题,但是这种算法的缺点也明显,只能使用可用内存空间的一半,空间浪费非常严重。

标记-整理算法

标记-整理算法的标记阶段和标记-清理算法一样,先标记出所有可回收对象,然后让所有存活对象向内存空间的一端移动,最后直接清理掉最后一个存活对象之后的所有内存空间,移动存活对象的时候就像整理一个个货物,所以它被称为标记-整理算法。

标记-整理算法看似比前两种算法都优秀,因为它既没有空间碎片的问题也没有空间浪费的问题,但是在整理过程中需要移动存活对象,移动之后需要更新所有引用这些对象的地方,这是一项非常中的操作。

http://www.15wanjia.com/news/19432.html

相关文章:

  • 天津做不锈钢的网站互联网优化是什么意思
  • 十个有创意的线上活动重庆seo整站优化设置
  • 佛山市网站建设分站企业国内新闻最新
  • 做网站文字要求网址大全名称
  • 手机怎么建立自己网站上海品牌推广公司
  • 一家专门做原型的网站长沙网站关键词推广
  • 大网站如何优化上海seo公司
  • 怎样做企业文化网站策划公司一般怎么收费
  • 企业如何在自己的网站上做宣传设计公司
  • 个人网站源码下载网站建站模板
  • 知名企业网站建设百度托管运营哪家好
  • 公司网页设计制作价格淘宝关键词优化技巧
  • html编辑器的推荐湖南seo网站开发
  • 长春建设平台网站的公司竞价销售是什么意思
  • 家乐福网上商城app下载武汉seo网站推广培训
  • 展馆设计施工一体化惠州seo代理计费
  • 安装师傅最好的接单平台seo能干一辈子吗
  • 一站式营销型网站建设服务产品推广广告
  • 如何做网页网站商务软文写作300
  • 自己做网站的难度百度网站提交了多久收录
  • 网站开发ide php石家庄今日头条新闻
  • 可以做基因通路分析的网站软文营销经典案例优秀软文
  • 政府网站建设工作情况汇报营销软件有哪些
  • 傻瓜内网网站建设百度推广
  • 多语言网站开发成都抖音seo
  • 邯郸网站设计怎么用淘宝营销推广方案
  • 织梦网站改版需要怎么做如何在各种网站投放广告
  • 仿站是什么意思百度在线客服人工服务
  • 公司做网站计入什么科目百度用户服务中心官网
  • 网站开发毕业任务书百度seo sem