4

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

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

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

任何人都知道如何处理这个问题?

4

1 回答 1

0

这是优化 Adob​​e Air 应用程序的好工具。Adobe空气调谐器:

我不熟悉你的项目;或者它是如何实施的。Adobe AIR 有几种释放内存的方法。这将允许您正确移除或处置您的物品。这些清理工作可以在这里找到。

有些人在创建媒体播放器时会做的一件事;尤其是拥有大型媒体的。例子:

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

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

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

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

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

于 2012-11-30T20:12:54.920 回答