1

这些天我读了很多关于 RSL 的文章。一个缺点是 RSL 必须加载到内存中,但可以节省大量加载时间。

现在在以下场景中会发生什么:

我有一个 superFramework.swf 和一个 subapp.swf。subapp.swf 使用 SWFLoader 在 superframework.swf 中按需显示和加载。但是,这两个 SWF 都依赖于 common.swc,它将被编译为 RSL。

所以依赖项看起来像这样:

superframework.swf           ---RSL---> common.swc
   ---SWFLoader-->subapp.swf ---RSL---> common.swc

现在我的问题:

  • subapp.swf 是否加载到单独的内存空间中?
  • 如果是:这是否意味着 common.swc RSL 两次加载到内存中?
  • 如果不是:那么像 common.swc 中的 ModelLocator 这样的单例呢?subapp.swf 和 superframework.swf 是否可以同时使用同一个实例?
4

1 回答 1

3

RSL 不是真正的动态库。它们更像是在运行时静态链接整个库。

  • subapp.swf 是否加载到单独的内存空间中?

是的,有点。所有 SWF 都在 Flash Player 中运行。出于安全原因,他们有自己的小沙箱。

  • 如果是:这是否意味着 common.swc RSL 两次加载到内存中?

是的,每个调用应用程序都会加载给定 RSL 的一份副本。

  • 如果不是:那么像 common.swc 中的 ModelLocator 这样的单例呢?subapp.swf 和 superframework.swf 是否可以同时使用同一个实例?

不,他们会有不同的实例。

RSL 有助于减少可分发的大小。但这不一定总是一个优势。我建议你在开始之前先浏览一下这个页面。

于 2009-03-13T18:23:20.233 回答