zoukankan      html  css  js  c++  java
  • 浅谈jvm垃圾回收

    作为应届生进到公司,公司运营出现问题,拖着不给转正,两个多月失去应届生身份开启社招之旅,被问到垃圾回收机制有点懵,看了一些资料来简单记录一下,都是按照自己的理解来写,可能会有错误

    怎么判断一个对象是否是一个垃圾?(怎么感觉像失恋在骂人)

    有两种方法:

    1、引用计数器算法

    通过将每一个对象的引用进行计数,当引用次数(引用次数是当前的状态会根据当前引用增加和减少)为零时,这个对象就成为了一个垃圾,可以被回收掉。

    2、根搜索算法

    将特定对象作为根对象,不断搜索它的引用,形成一个引用链,当对象没有被引用时,它就是一个垃圾,可以被回收掉。

    回收策略

    1、标记清除法

    通过根搜索算法将被引用的对象标记,然后将没有标记的对象清除,效率低,清除的时候要遍历所有对象

    2、复制法

    将内存分为两块区域,工作空间和闲置空间,将活着的对象移动到空闲空间,然后清除工作空间,效率高,但是空间减半,有点浪费内存

    3、标记整理法

    通过根搜索算法把活着的对象标记出来,移动到一块内存中,然后将这块内存以外的区域上的对象全部回收,效率比较高内存占用也低

    分代回收

    将内存中的资源分为年轻代、老年代、持久代,而采用不同的策略来回收,提高效率
    年轻代一般为刚创建的对象,存活率低,每次垃圾回收都会回收很多,这就需要采用标记整理法来处理
    老年代是经历多次垃圾回收还活着的对象,这部分对象比较少,采用复制法,也不会浪费大量的空间
    持久代是类和和方法不会被清理

  • 相关阅读:
    第一章-环境准备
    selenium-pageobject设计模式
    自动化测试用例设计原则
    selenium隔离环境安装、以及示例
    json extractor获取返回值中动态新增的数据
    jmeter返回值乱码问题
    liunx命令
    SQL表结构语句
    测试网络脚本python
    C# 订单流水号生成
  • 原文地址:https://www.cnblogs.com/freven/p/15263699.html
Copyright © 2011-2022 走看看