• day9


    内存管理机制(数据需要回收,所以要涉及到内存管理)

    引用计数 (引用计数会出现循环引用问题)
    #变量对空间进行持有,引用计数+1
    #变量对空间进行解绑,引用计数-1
    #当引用计数为0时,垃圾回收机制会回收空间(将空间标记为可用状态)

    引用计数会出现循环引用问题:相互引用无法释放

    #堆区的空间之间存在相互引用,引用这些空间的栈区变量一旦断开绑定,会导致堆区空间被变量引用的计数会减掉,但是相互引用的计数无法减掉,会一值存在存活在内存中,这叫内存泄漏

    标记清除:(解决循环引用问题)
    #所有线程能访问到的栈区变量,称之为gc roots对象
    #垃圾回收机制被调用依赖于两个机制,固定的时间被调用一次,达到相应的阈值被调用一次
    #当内存泄漏过多,内存空间达到设定的阈值会触发标记清楚. gc roots对象将可以访问的数据标记为存活状态
    #标记所有gc roots对象直接或间接能访问的数据都会标记为存活状态 将存活状态的值完成拷贝,变量重指向,消除之前所有数据

    优化机制(分代回收)

    #随着分代的作用,高频率检查的变量会逐渐渐少,从而达到提高回收的效率,可以快速定位到需要被回收的变量

    #可以忽略的问题(刚往上分代,被回收的变量需要延迟一段时间才会被回收)

    懒加载

    setdefault()

  • 相关阅读:
    js Bom Dom
    2019西安多校联训 Day1
    数论——扩展欧几里德
    MySQL InnoDB引擎行格式、数据页简析
    centos7安装ansible并简单设置k8s集群节点hosts文件
    Redis缓存穿透和雪崩
    Redis主从复制——哨兵模式
    Redis主从复制——非哨兵模式
    Redis发布订阅
    Redis持久化——RDB与AOF
  • 原文地址:https://www.cnblogs.com/zhuqihui/p/10759056.html
Copyright © 2020-2023  润新知