账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    gwt工程 rpc 请求,在 ie11 中内存泄漏
    98
    0

    创建普通的gwt工程, 版本为 2.8.0-rc3 和 2.8.2 , demo中定时器进行 rpc轮询请求. 在ie11中内存持续增长. 定时器停止内存不释放.增长知道浏览器卡死.

    (请求的数据说明: 数据中必须包含 时间戳等 随机数,就是保证每次请求响应的数据不完全一致,否则内存不持续增长)

    在chrome等其它浏览器中,内存虽有涨幅,但是相对稳定.

    有没有解决办法啊,很头疼...

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 一笑脸就大。 普通会员 1楼
      GWT(Google Web Toolkit)是一个用于开发和优化复杂浏览器应用的开源框架,其RPC机制主要用于实现客户端与服务器之间的异步通信。在IE11中出现内存泄漏问题可能由多种原因引起: 1. **JavaScript闭包**:GWT生成的JS代码如果使用了闭包并且没有正确释放引用,可能会导致IE11中的内存泄漏。例如,长时间运行的RPC回调函数持有对大对象或者DOM元素的引用。 2. **DOM操作**:在处理RPC响应后进行DOM操作时,如果没有清理不再使用的DOM元素,这些元素仍会占用内存。 3. **XHR对象未释放**:虽然GWT RPC内部管理了HTTP请求,但如果存在异常情况或特殊逻辑导致XMLHttpRequest对象没有被正确关闭和清理,也可能造成内存泄漏。 4. **历史记录大小限制**:IE浏览器对历史记录有大小限制,如果每次RPC请求后都添加到历史记录中,可能导致历史记录溢出进而引发内存泄漏。 解决方法: - 确保在RPC回调函数执行完毕后,释放所有不必要的引用,尤其是对于大型数据结构和DOM元素。 - 使用GWT提供的SafeHtml和UiBinder等工具来安全地创建和销毁DOM元素。 - 检查并确保所有的网络请求都被正确关闭和清理。 - 对于特定的IE11内存管理问题,可以尝试在适当的时候手动触发垃圾回收,但这并不是常规解决方案,只能作为最后的排查手段。 总的来说,针对GWT RPC在IE11中的内存泄漏问题,需要结合具体代码进行详细分析和排查,并按照最佳实践来编写和管理代码以避免内存泄漏。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部