我在Flex应用程序中遇到内存泄漏。 Flex应用程序是大型Web应用程序的一部分(其中包含各种技术)。Flex应用程序中的内存泄漏
当Flex应用程序每5秒从服务器调用一次刷新轮询时,会发生内存泄漏。
事实是:
- 我使用的AMFChannel进行连接。投票是错误的。每刷新一次会创建新的实例。
- 服务器端是BlazeDS,作为我的web应用程序中的servlet运行。
- 内存泄漏发生在IE和FireFox。它根本不会发生在Chrome。
- 过了一个晚上,IE内存增加了数百MB,最终崩溃。
- 在Flex中,内存增加但速度要慢得多。过夜它会增加30MB。
- 使用Flex配置文件我看到增加的内存与 的AMFChannels有关。
- 我试图设置AMFChannel requestTimeout到60秒。它什么都没做。
- 我试图设置BlazeDS connect-timeout-seconds到60秒。没有改变。但我不确定我是否做得正确。
我的结论至今有:
- 的的AMFChannel实际上是获得来自浏览器的连接。在Flex中,AMFChannel消耗一小部分内存,而在浏览器中消耗更多。这解释了Flex应用程序和IE之间消耗内存的不同。
- 不知何故,AMFChannel没有关闭,也没有垃圾收集。
我的请求:
- 是我的结论是正确的?
- 如何确保AMFChannel已关闭并清理干净?
- 客户端上的连接实例是否由BlazeDS(在服务器端)控制?
- 任何其他线索来帮助我继续调查这个问题
感谢
感谢您的回复。如果AMFChannel在Flex中不是免费的,它是否会导致IE上的连接对象熬夜? – 2013-04-04 13:56:42
我手动添加断开呼叫到每个活动超过1分钟的每个RemoteObject。它看起来像Flex内存是稳定的,但IE内存继续增长。 – 2013-04-04 14:25:48