似乎如果 flash.net.NetConnection 被实例化并连接到 HTTP URL(例如 AMFPHP 网关),那么即使在关闭并且唯一引用设置为 null 之后,垃圾收集也不会拾取该实例。
另一方面,如果实例连接到 null(如用于播放视频/mp3 文件时所做的那样),则该实例将从内存中清除。
为了澄清,以下连接将保留在内存中:
var stickyConn:NetConnection = new NetConnection();
stickyConn.connect("http://myserver/amfphp/gateway.php");
stickyConn.close();
stickyConn = null;
然而,以下连接将立即从内存中清除:
var tempConn:NetConnection = new NetConnection();
tempConn.connect(null);
tempConn.close();
tempConn = null;
我已经尝试过一些事情来解决这个问题:
- 将客户端设置为空对象(因为客户端的默认值是 NetConnection 本身)
- 在关闭连接之前,调用
connect(null)
- 关闭连接后,再次调用
connect(null)
并关闭它
有没有人遇到过这个问题?有针对这个的解决方法吗?