【发布时间】:2013-03-26 07:17:55
【问题描述】:
我的 Flex 应用程序中存在内存泄漏。 Flex 应用程序是大型 Web 应用程序的一部分(内部包含各种技术)。
当 Flex 应用每 5 秒从服务器调用一次刷新轮询时,就会发生内存泄漏。
事实是:
- 我正在使用 AMFChannel 进行连接。投票是假的。每次刷新都会创建新的 AMFChannel 实例。
- 服务器端是 BlazeDS,在我的 Web 应用程序中作为 servlet 运行。
- IE 和 FireFox 上发生内存泄漏。 Chrome 上根本不会出现这种情况。
- 一夜之间,IE 内存增加了数百 MB,最终崩溃。
- 在 Flex 中,内存确实增加了,但速度要慢得多。一夜之间 将增加 30MB。
- 使用 Flex 分析器我看到增加的内存与 AMF 频道。
- 我尝试将 AMFChannel requestTimeout 设置为 60 秒。它什么也没做。
- 我尝试将 BlazeDS connect-timeout-seconds 设置为 60 秒。没有改变。但我不确定我做对了。
到目前为止我的结论是:
- AMFChannel 实际上是从浏览器获取连接。在 Flex 中 AMFChannel 消耗一小块内存,而在浏览器中它消耗更多。这解释了 Flex 应用和 IE 在内存消耗方面的差异。
- 不知何故,AMFChannel 没有关闭,也没有进行垃圾收集。
我的要求:
- 我的结论对吗?
- 如何确保 AMFChannel 已关闭和清理?
- 客户端上的连接实例是否由 BlazeDS(在服务器端)控制?
- 任何其他有助于我继续调查此问题的线索
谢谢
【问题讨论】:
标签: apache-flex memory-leaks blazeds