【问题标题】:Loading images takes my direct memory up | AS3加载图像占用了我的直接记忆 | AS3
【发布时间】:2015-09-26 08:15:01
【问题描述】:

我只是加载位图,甚至没有将它们添加到舞台上,每个图像都会占用我的直接内存。大图像会占用更多内存,所以我想知道即使在加载这些位图之后如何保持直接内存低,或者我在这里做错了什么或遗漏了什么?

    var myBitmapHolder:Bitmap; 

    var bitmapLoader:Loader = new Loader();
    bitmapLoader.addEventListener(Event.COMPLETE, bitmapLoaded);
    bitmapLoader.load(new URLRequest("myBitmap.png");

    private function bitmapLoaded(e:Event):void {
        myBitmapHolder = e.currentTarget.content;
    }

加载位图后,我使用 myBitmapHolder 存储它,以便根据请求访问它。我使用了 30 多个位图,分别对每个图像的工作方式与上面的示例相同。

【问题讨论】:

  • 您认为这些位图加载到什么位置?它们被加载到内存中。
  • 他们还能去哪里?如果您想保持较低的内存使用率,则应仅在需要时加载图像。
  • 如果像我这样的小应用只加载几个位图后就占用了大量内存,那么一个大应用程序如何处理,比方说超过300个位图?我发布了我的问题,因为我不确定我处理加载位图的方式是最好的方式。
  • 就像我说的,仅在必要时加载图像是一种可能的方法。您是否需要在应用程序的整个运行时使用这 300 个位图?
  • 如果您使用多个具有相同内容的位图,您应该保留指向BitmapData 对象的链接并创建新的Bitmap 对象,同时在构造函数中提供指向该位图数据的链接。关于许多位图,是的,应用程序确实会占用位图上的内存,而且相当多。

标签: performance actionscript-3 flash memory flashdevelop


【解决方案1】:

所以 ... 没有可用资源 - 您必须将所有资源加载到内存中,或者您必须加载然后卸载每个或几个位图。这将“吃掉”其他一些资源,例如 cpu 和网络流量等。
首先,您必须在 'bitmapLoaded' 函数中删除 'bitmapLoader' Event.COMPLETE 侦听器:bitmapLoader.removeEventListener(Event.COMPLETE, bitmapLoaded); }
您必须确保加载一次位图。
看看这个:AS3 - Memory managementWhat are good memory management techniques in Flash/as3
你也可以看看:imageDecodingPolicy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2012-05-15
    • 2011-07-02
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多