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