• 初始化与清理


    一、垃圾回收器如何工作?

      1、Java虚拟机将采用一种自适用的垃圾回收技术。

           停止-复制:

        原理:  先暂停程序的运行(所以它不属于后台回收模式),然后将所有存活的对象从当前堆复制到另一个堆,没有被复制的全部都是垃圾。当对象被复制到新堆时,他们是一个挨着一个的,所以新堆保持着紧凑的排列,当对象从一处搬到另一处的时候,所有指向它的引用都必须修正,位于堆和静态存储区的引用可以直接被修正,但可能还有其他指向这些对象的引用,他们在遍历的过程中才能被找到。

               劣势:  这种所谓的“复制式回收器”,效率会降低,首先,有两个堆,然后在之间来回倒腾,从而得维护比实际需要多一倍的空间。某些Java虚拟机处理方式,按需从堆中分配几块较大的内存,复制动作发生在这些大块的内存之间。 第二个问题,程序进入稳定状态之后,可能只会产生少量垃圾,甚至没有垃圾,尽管如此,复制回收器仍然会将所有的内存自一处复制到另一处,很是浪费。

               标记-清扫:

               原理:   从堆栈和静态存储区出发,遍历所有的引用,进而找出所有的存活的对象。每当它找到一个存活的对象,将会给对象设置一个标记,这个过程中将不会回收任何对象,只有全部标记工作完成,清理动作才会开始。在清理过程中,没有标记的对象将会被释放,不会发生任何复制的动作。

               劣势:   速度相当慢,所有剩下的堆空间是不连续的,垃圾回收是希望的连续的话,就得重新整理剩下的对象。

       总结: 一些Java虚拟机会进行检查,停止-复制下 要是没有新垃圾产生,就会转换到另一种工作模式,即标记-清扫。         

  • 相关阅读:
    vuex 使用
    vue之路由嵌套
    vue 之路由跳转及传参
    vue 的组件通讯
    vue 的 axios 安装
    vue3.0脚手架 创建项目
    淘宝页面初始化的css代码
    关闭当前浏览器窗口
    BOM
    单双引号和转义字符
  • 原文地址:https://www.cnblogs.com/huxipeng/p/6696721.html
Copyright © 2020-2023  润新知