我们有一个灵活的应用程序,通常会运行很长一段时间(可能是几天或几周)。当我今天早上进来时,我注意到应用程序已经停止运行,并且应用程序的中心位于一个灰色圆圈中的白色感叹号。我在Adobe论坛上找到了一篇关于它的帖子,但似乎没有人确切知道这个符号的含义,所以我想我会联系SO社区。 p>
Adobe论坛帖子:http://forums.adobe.com/message/3087523
符号的屏幕截图:
有什么想法吗?
答案 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”?