html - Adobe Air HTML 动态图库——如何通过删除图片释放内存

标签 html memory air adobe memory-leaks

我正在使用 Adob​​e Air 及其 HTML API 开发一个小型桌面应用程序。 该应用程序有两个窗口,一个显示本地计算机文件夹中图像的幻灯片,另一个窗口允许您浏览这些图像(一个大图像和上一个/下一个按钮)。

首先,为了快速测试,我只是将文件夹中的所有图像加载到每个窗口的 DOM 中,它工作正常,直到我遇到太多图像(150 多张),因为它们是来自 DSLR 的高分辨率 JPEG。显然,每张图片都会占用大量内存,并且可能会因过度泄漏而终止应用程序。所以我开始优化浏览窗口,而不是全部加载它们我只使用一个标签并将 .src 值替换为 javascript。但这种技术只是延迟问题,因为当我继续浏览所有图像时,内存使用量越来越大。替换图片的src并不会释放之前图片占用的内存。如果我尝试从 DOM 中删除图像并重新创建它,情况也是一样。

我有一个想法,但我不太喜欢它,那就是在加载另一个 HTML 文件的框架内显示图像,将图像 src 作为参数传递给它。然后重新加载整个框架,希望它可以重置内存使用情况。还没试过。

有人知道如何处理这个吗?

最佳答案

这是优化 Adob​​e Air 应用程序的好工具。土坯 Air Tuner:

我不熟悉你的项目;或者它是如何实现的。 Adobe AIR 有几种方法可以释放内存。这将使您能够正确移除或处置您的元素。可以找到这些清理 here .

有些人在创建媒体播放器时会做的一件事;特别是那些有大媒体的。示例:

假设您的媒体播放器包含六页内容;总共1GB的总数据。这对您的项目来说是一个非常非常大的内存分配。所以不如一次调用整个 1GB;第一页加载,第二页加载。

其他四个页面保持“未调用”状态,没有动态加载。然后用户切换到第二页;第三页内容开始预加载。用户切换到第三页;第四页将开始加载。但它也会处理在第一页中创建的数组或对象。这样就不会影响应用。

显然这种方式很乏味,因为您要控制加载的所有方面。如果您的用户开始快速浏览页面,它也会带来问题。

所以另一种可能的解决方案;将创建缩略图,使尺寸大大缩小。然后加载全尺寸图像作为独立的流,一旦它们离开该区域就可以毫无问题地处理。这样画廊就独立了。

如果您提供一些代码或一些额外的细节,我可能会在接口(interface)/内存实现建议之外为您提供帮助。

关于html - Adobe Air HTML 动态图库——如何通过删除图片释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065645/

相关文章:

ios - FlashDevelop - 在 iOS 上加载外部 swf

jquery 将第一个链接标记为在菜单中处于事件状态

javascript - "text-decoration: blink"& 浏览器

ios - UICollectionView 迭代单元格 - 内存警告

apache-flex - 如何配置 Air 应用程序以引用外部配置文件?

ios - 在 AIR for iOS 上启用 iCloud

javascript - 使用 Javascript/PHP : Trying to display background image - logic wrong?

html - 连续得到 10 个二次方 block

Java 多进程和堆大小

mysql - 在 DCHQ 上找不到节点 [AppServer] 所需内存最少的匹配服务器