Actionscript 3 什么窗口;“性能监视器”;我应该使用设置调试引发InvalidBitmap错误的Flash影片吗?

Actionscript 3 什么窗口;“性能监视器”;我应该使用设置调试引发InvalidBitmap错误的Flash影片吗?,actionscript-3,memory,flash-cs4,bitmapdata,Actionscript 3,Memory,Flash Cs4,Bitmapdata,我的问题是: 我有一个Flash swf,可以从本地机器上传文件,如果是图像,它会根据需要调整大小。这涉及从bitmapData对象创建JPGEncoded bytearray。在我处理完bitmapData后,我会处理掉它 我注意到flash有时在调整图像大小时会被卡住,并跟踪到“invalid bitmapData”错误消息。昨晚下班前我试过了,它在两张图片后抛出了这个消息!!今天早上一切似乎都很好,所以我决定推它,并尝试上传20幅5616x3744像素和5.32MB的图像(与我之前尝试的图

我的问题是:

我有一个Flash swf,可以从本地机器上传文件,如果是图像,它会根据需要调整大小。这涉及从bitmapData对象创建JPGEncoded bytearray。在我处理完bitmapData后,我会处理掉它

我注意到flash有时在调整图像大小时会被卡住,并跟踪到“invalid bitmapData”错误消息。昨晚下班前我试过了,它在两张图片后抛出了这个消息!!今天早上一切似乎都很好,所以我决定推它,并尝试上传20幅5616x3744像素和5.32MB的图像(与我之前尝试的图像相同)

我打开了windows中的性能监视器,并开始在mozilla+firebug中运行的SWF中进行上传。大约12张图片的效果非常好,然后在13日(!!)它再次冻结。我附上了performance mon的图表截图

我猜我需要做更多这样的测试,看看哪里有问题。有谁能解释一下我在这里看到的可能导致问题的东西吗?黄线看起来可疑!(?)

大的绿色尖峰对应于重绘位图数据,我认为小的绿色尖峰是在成功加载大版本后从同一位图对象绘制缩略图版本。我应该使用哪些其他计数器来监视内存使用情况等

任何建议都将不胜感激。
非常感谢

你的像素太多了,仅此而已。 在Flash Player 10中,位图可以具有si 16777215(或0xFFFFFF)的最大像素数。此外,只要总像素计数低于最大值,则最大宽度或高度为8191。
您的测试位图有21026304,这远远超出了顶部。

此错误来自何处?你是用代码捕捉它,还是通过浏览器或Flash或其他方式显示它?我认为您不需要性能监视器,我认为您需要跟踪该错误,并找出在什么情况下会出现什么问题,但我们可以使用更多信息。只有在Flash CS4中本地运行时,才会显示该错误。我正在追踪系统范围内的闪存,并注意到在仅3.7MB的映像中加载时,从87MB跳到166MB。图像加载程序的onProgress处理程序loadBytes()还跟踪加载过程中使用的87MB内存。然后在我完整的处理器中,内存达到166MB。此时bitmap.width=0和bitmap.height=0抛出-ArgumentError:Error#2015:bitmap数据无效。在flash.display::BitmapData()在uploader\u fla::MainTimeline/UploadeResizedImage()在uploader\u fla::MainTimeline/\u onImageLoaded()更正错误只在flash CS4中报告,而不是在web上报告,我需要添加一个try,catch。是否可能看到一些代码片段?你是说错误发生在图像大小调整之后,在上传过程中,对吗?乍一看,这听起来有点像竞争条件,您是否尝试过不处理BMData并将其留给GC?但无论如何,看到一些代码可能会有所帮助。顺便说一句,沉重的图像内容占用大量内存是正常的,因为压缩的JPG可能只有几MB,但在内部它是原始存储和解压的,每像素消耗32位或任何东西(我不确定,可能是Mipmap占用了额外的空间)。