Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何在探查器中发现内存泄漏?_Apache Flex_Memory Leaks_Air_Profiling - Fatal编程技术网

Apache flex 如何在探查器中发现内存泄漏?

Apache flex 如何在探查器中发现内存泄漏?,apache-flex,memory-leaks,air,profiling,Apache Flex,Memory Leaks,Air,Profiling,我有一个我制作的AIR/Flex应用程序,我有几个人在测试它,每个人都报告说,在让它运行一段时间后,所有这些机器都运行得非常慢。它一开始运行正常,所以这一定是某个地方的内存泄漏。我在这里使用了探查器,唯一显示为使用大量内存的是MethodQueueElement,它不是我编写的类,我不知道它做什么,我假设它是Flex框架的一部分。我不熟悉使用分析器,所以我不确定我应该看什么,这是唯一一个“内存”很高的类,它说它有100000多个实例。如果这是我的问题,我能做些什么来解决它?我甚至不知道这个类做什

我有一个我制作的AIR/Flex应用程序,我有几个人在测试它,每个人都报告说,在让它运行一段时间后,所有这些机器都运行得非常慢。它一开始运行正常,所以这一定是某个地方的内存泄漏。我在这里使用了探查器,唯一显示为使用大量内存的是MethodQueueElement,它不是我编写的类,我不知道它做什么,我假设它是Flex框架的一部分。我不熟悉使用分析器,所以我不确定我应该看什么,这是唯一一个“内存”很高的类,它说它有100000多个实例。如果这是我的问题,我能做些什么来解决它?我甚至不知道这个类做什么,也不知道它是如何被实例化的


感谢

MethodQueueElement类是mx.core.UIComponent类的内部类。 它用于表示已由callLater调用排队的方法调用。 callLater方法是UIComponent的公共接口的一部分,因此您可以在代码中调用它,也可以由框架调用它(例如在UIComponent.setFocus中)

要释放所有MethodQueueElement实例,UIComponent将MethodQueueElements的当前数组替换为新的(空)数组。(在callLaterDispatcher2方法中)因此,使内存泄漏的唯一方法是防止调用callLaterDispatcher2

要调试它,您可以开始在方法callLater(在这里创建实例,所以它总是被调用,请看这里的stacktrace!)、callLaterDispatcher2(我想它不会被调用)中设置断点(当应用程序运行时),并检查UIComponentGlobals.callLaterSuspendCount是否为!=0,这可能是callLaterDispatcher2未被调用的原因


如果是后者,我怀疑,您有Tween或其他调用UIComponent.suspendBackgroundProcessing但没有调用resumeBackgroundProcessing(因为在到达resumeBackgroundProcessing调用之前终止代码的异常),例如。

哪个版本的flex framework(或FlexSDK,当您不在特定框架上编译时)您使用的是什么?