zoukankan      html  css  js  c++  java
  • 释放内存

    删除对对象的所有引用以确保触发垃圾回收。

    在 Flash Player 的发行版中无法直接启动垃圾回收器。要确保将一个对象作为垃圾回收,请删除对该对象的所有引用。请记住,在 ActionScript 1.0 和 2.0 中使用的旧 delete 运算符在 ActionScript 3.0 中有不同的行为。它只能用于删除动态对象的动态属性。

    注: 在 Adobe® AIR® 和 Flash Player 的调试版中可以直接调用垃圾回收器。

    例如,以下代码将 Sprite 引用设置为 null

    var mySprite:Sprite = new Sprite(); 
     
    // Set the reference to null, so that the garbage collector removes  
    // it from memory 
    mySprite = null;

    请记住,当对象设置为 null 时,不必将其从内存中删除。如果系统认为可用内存不是足够低,垃圾回收器可能不会运行。垃圾回收的执行时间不可预知。内存分配(而不是对象删除)会触发垃圾回收。当垃圾回收器运行时,它将查找尚未收集的对象的图形。垃圾回收器通过在这些图形中查找相互引用但应用程序不再使用的对象,从而检测出处于非活动状态的对象。将删除通过这种方式检测到的处于非活动状态的对象。

    在大型应用程序中,此进程会占用大量 CPU 并影响性能,还可导致应用程序运行速度显著降低。通过尽量重复使用对象,尝试限制使用垃圾回收。此外,尽可能地将引用设置为 null,以便垃圾回收器用较少处理时间来查找对象。将垃圾回收看作一项保护措施,并始终尽可能明确地管理对象生存期。

    注: 将对显示对象的引用设置为 null 不能确保冻结该对象。该对象在作为垃圾回收之前,仍将占用 CPU 周期。在将对对象的引用设置为 null 之前,先确保正确地停用对象。

    可使用 Adobe AIR 和 Flash Player 的调试版中提供的 System.gc() 方法启动垃圾回收器。将此设置与 Adobe® Flash® Builder™ 捆绑还可以手动启动垃圾回收器。通过运行垃圾回收器,可以了解应用程序的响应方式以及是否已将对象从内存中正确删除。

    注: 如果将某个对象用作事件侦听器,则其他对象可以引用它。如果是这样,先使用 removeEventListener() 方法删除事件侦听器,然后再将引用设置为 null

    幸运的是,这样可以立即减少位图使用的内存量。例如,BitmapData 类包括一个 dispose() 方法。下面的示例将创建一个 1.8 MB 的 BitmapData 实例。当前使用的内存增大到 1.8 MB,System.totalMemory 属性返回一个更小的值:

    trace(System.totalMemory / 1024); 
    // output: 43100 
      
    // Create a BitmapData instance 
    var image:BitmapData = new BitmapData(800, 600); 
     
    trace(System.totalMemory / 1024); 
    // output: 44964 
    

    然后,手动将 BitmapData 从内存中删除并再次检查内存使用情况:

    trace(System.totalMemory / 1024); 
    // output: 43100 
      
    // Create a BitmapData instance 
    var image:BitmapData = new BitmapData(800, 600); 
     
    trace(System.totalMemory / 1024); 
    // output: 44964 
     
    image.dispose(); 
    image = null; 
     
    trace(System.totalMemory / 1024); 
    // output: 43084 

    尽管 dispose() 方法可删除内存中的像素,但仍必须将引用设置为 null 才可完全释放内存。当不再需要 BitmapData 对象时,要始终调用 dispose() 方法并将引用设置为 null,以便立即释放内存。

    注: Flash Player 10.1 和 AIR 1.5.2 在 System 类中引入了一个名为 disposeXML() 的新方法。借助此方法,通过将 XML 树作为参数传递,可立即使 XML 对象可用于垃圾回收。
  • 相关阅读:
    oracle 更改账户名密码
    mongodb 分片副本集搭建
    爬虫目录
    centos MySQL安装与卸载
    ANACONDA 安装
    chrome 安装
    linux pycharm 安装 idea
    linux 基本命令
    高数18讲 之极限与连续
    高数18讲 之基础知识
  • 原文地址:https://www.cnblogs.com/bmate/p/2084917.html
Copyright © 2011-2022 走看看