Flex   发布时间:2019-10-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了调试FLEX / AS3内存泄漏大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个非常大的Flex& Papervision3D应用程序不断创建和销毁对象.它也可以加载和卸载SWF资源文件.当它运行时SWF慢慢消耗内存直到大约2GB,当它晃动播放器时.显然,我很确定我放弃了对不再需要的实例的引用,期望GC能够完成它的工作.但我很想知道问题所在.

我已经尝试使用分析器及其选项捕获内存快照等 – 但我的问题仍然是回避.我认为使用调试Flash播放器也存在已知问题吗?但我也不喜欢使用发布版本.

如何使用FLEX / AS3跟踪内存泄漏问题?您用于定位消费的一些策略,技巧或工具是什么

解决方法

我偶然发现了解释如何在Flex Builder中使用Flex Profiler的内容,这对我调试内存泄漏是一个巨大的帮助.我肯定会建议尝试一下.它非常易于使用.我在分析应用程序时发现的一些事情:

避免使用集合(至少是LARGE集合)作为Value Objects的属性.我在Cairngorm应用程序中有几种类型的值对象类,每个类都有一个“children”属性,它是一个ArrayCollection,用于过滤.在进行性能分析时,我发现这些是我最大的内存消耗者之一,因此我将应用程序更改为将“parentId”存储为int并将其用于过滤.使用的内存大幅削减.像这样的东西:

旧方式:

public class owner1
{
    public var id:int;
    public var label:string;
    public var children:ArrayCollection; // Stores any number of owner2 Objects
}

public class owner2
{
    public var id:int;
    public var label:string;
    public var children:ArrayCollection; // Stores any number of owner3 Objects
}

public class owner3
{
    public var id:int;
    public var label:string;
}

新方法:

public class owner1
{
    public var id:int;
    public var label:string;
}

public class owner2
{
    public var id:int;
    public var label:string;
    public var parentId:int; // Refers to id of owner1 Object
}

public class owner3
{
    public var id:int;
    public var label:string;
    public var parentId:int; // Refers to id of owner2 Object
}

我还建议在不再需要时删除事件监听器.

大佬总结

以上是大佬教程为你收集整理的调试FLEX / AS3内存泄漏全部内容,希望文章能够帮你解决调试FLEX / AS3内存泄漏所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。