Flex错误 - 灰色圆圈中的白色感叹号:这是什么意思?

时间:2010-12-28 16:32:24

标签: flex actionscript-3 flex3 flex4

我们有一个灵活的应用程序,通常会运行很长一段时间(可能是几天或几周)。当我今天早上进来时,我注意到应用程序已经停止运行,并且应用程序的中心位于一个灰色圆圈中的白色感叹号。我在Adobe论坛上找到了一篇关于它的帖子,但似乎没有人确切知道这个符号的含义,所以我想我会联系SO社区。

Adob​​e论坛帖子:http://forums.adobe.com/message/3087523

符号的屏幕截图:

alt text

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

以下是您从Adobe员工链接到的帖子中的答案:

  

您看到的错误是新的   内存不足通知。它是   基本上屏蔽了用户   内存使用率靠近系统   资源上限。最好的课程   动作在这里(如果你拥有内容)   是检查你的申请高   内存使用情况并纠正错误。   如果你不拥有这些内容,那就会   可能最好联系业主   让他们意识到你的问题   正在看。

他在以后的回复中也这样说:

  

开发人员可以使用   AS3中的System.totalMemory属性   监视内存使用情况   Flash Player正在占据上风。这个iwll   让你看看有多少内存   使用,泄漏的地方,允许你   基于此优化您的内容   属性。

答案 1 :(得分:1)

我为一家数字标牌公司工作,我们也遇到了这个错误,但是,它不仅与内存泄漏有关,因为它可能是由于利用所提供的页面上的矢量代码引起的。我们还注意到它在没有任何记忆峰值的情况下发生,有时候会随机出现。但是我们注意到,当我们用向量错误复制错误时,它说这是一个内存不足错误 - 显然不是这种情况。

在我们的内部测试中,我们注意到这个错误只发生在Flash Player 10.1及以上版本中,flash player 10似乎没有这个问题。此外,在发生的错误和视频的使用之间似乎存在弱连接。我知道这可能不是太多的帮助,但只是认为你应该知道它不仅是与内存泄漏相关的问题。我已将此错误提交给Adobe,希望他们能尽快解决。

答案 2 :(得分:1)

使用Vector.int时可能会发生这种情况,该Vector.int使用单个负数int的数组进行初始化。由于您使用以下代码初始化vector类的方式:

Vector.int([ - 2])

-2传递给矢量类,因为它的初始长度就像Array(5)一样。这会以某种方式导致错误(并且不作为例外检查和引发)。

答案 3 :(得分:1)

我还注意到将负值传递给Vector的长度时会重复该问题。 可能的解释是向量试图分配它立即给出的长度。

由于负值被强制转换为uint,因此负值会自动转换为非常大的正值。这导致Vector尝试分配太多内存(大约4GB),因此立即崩溃。

如果将负值传递给数组的长度则没有任何反应,因为显然它不会尝试分配长度。但你可以检查一下这个值,看看它是一个非常大的正数。

这个解释纯粹是猜想,我在任何地方都听不到。但它与语义和感叹号的含义一致。

这就是说,我已经搜索了整个代码库以使用setter“length”,并且找不到它与Vector一起使用。尽管如此,我们经常遇到这种类型的崩溃 - 其中一些是由实际的高内存消耗(可能是泄漏)引起的,但有时它只是在内存相对较低时发生。

我无法解释。也许还有其他一些操作可能会导致分配大量内存,而不是设置器“lenght”?