• 内存管理 内存泄漏


    垃圾回收机制是周期性的,按照特定的周期循环,或者按照预先定义的时间执行
     
    最流行的回收机制是mark-and-sweep
    当一个变量进入当前上下文,那么会被标示为在上下文中,内存不会被释放,当他离开会被标示为不在上下文,当垃圾回收机制运行的时候,它会首先记录内存里的所有变量,然后将那些在上下文中和被在上下文中变量引用的变量去掉,然后剩下的变量会被销毁,它们占用的内存也会被回收
     
    As of 2008, Internet Explorer, Firefox, Opera, Chrome, and Safari all use mark-and-sweep garbage collection (or variations thereof) in their JavaScript implementations, though the timing of garbage collection differs.
     
    另一种回收机制为reference counting,这个方法的原理是每一个对象记着有对自己的引用总数,当垃圾回收运行的时候,会把引用数为0的值销毁释放内存。这个机制有个严重的问题,当对象相互引用时,会出现circular references,因此现在的浏览器都不在使用这种算法。但是在ie8及之前的浏览器里并不是所有的对象都是原生对象,Dom 和BOM 里的对象被称之为COM (Component Object Model) 对象,使用C++实现。而Com里面是用reference counting作为垃圾回收机制的,因此还是会存在问题。例如:
     
    var element = document.getElementById(“some_element”); var myObject = new Object();
    myObject.element = element;
    element.someObject = myObject;
    解决方法
    myObject.element = null; element.someObject = null;
     
    在ie浏览器通过window.CollectGarbage()出发回收,opera通过window.opera.collect()
  • 相关阅读:
    python处理孤立的异常点
    使用redis实现程序或者服务的高可用
    redis报错: redis.exceptions.ResponseError: value is not an integer or out of range
    angular6 使用信息提示框toast
    浏览器中模仿跨域请求
    python aes_cbc加密
    openresty钉钉免密登陆
    openresty 钉钉签名计算
    ansible服务部署
    tornado 文件上传
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5164102.html
Copyright © 2020-2023  润新知