0

我创建了一个在 UI 中显示 3-4 个图表的 UI。

我注意到以下

  1. 一旦这些图表加载,IE 内存就会飙升至大约 400 Mb,这是可以理解的,因为其中一些图表就像显示多达一千行的表格。

  2. 我注意到我刷新这些图表的次数越多,IE 内存增加的次数就越多。

通过多次简单的代码演练,我找不到任何泄漏或任何大小正在增加的数据结构。我正在使用 Flex builder 2。我有几个问题:

  1. Flash什么时候释放内存?我可以 IE 将该内存返回给操作系统吗?

  2. Flash中是否存在已知的内存泄漏?
  3. 有哪些工具可以帮助我?
  4. 是否有任何编程最佳实践,例如将未使用的对象显式设为空,有帮助吗?

非常感谢您。

我还有一个问题,IE 似乎根本不会释放任何内存,除非它被最小化?

4

1 回答 1

1

1)本文将解释有关垃圾收集的所有内容(托管语言如何处理内存管理)。基本上你无法控制它何时运行(有一个黑客可以强制它,但你不应该使用它)

http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html

和这个

http://blog.flexmonkeypatches.com/2007/03/28/flash-player-memory-management-and-garbage-collection-redux-2/

2) 只要​​您确保不再需要的对象能够被垃圾收集,就不应该有泄漏。话虽如此,我对 Flex 并不熟悉,也许框架中存在错误???编辑:似乎有很多人对 flex+ie 和内存泄漏有疑问。

3) System.totalMemory 至少可以帮助您查看正在使用的内存量。编辑:忘了提如果你升级到 Flex Builder 3 它带有内存分析器工具

4) 是的,如果您不再需要将其设置为 null 的东西是一个好习惯。不要忘记删除任何事件侦听器并尽可能使用弱侦听器。如果仍然有对某物的引用,那么它不会被标记为垃圾收集器。

于 2010-01-21T08:55:10.530 回答