2013-07-03 21 views
0


我正在使用gridjo和dojo 1.8.3库。
我的应用程序需要使用来自服务器的数据每秒刷新一次dojo网格。
以下是刷新网格并为每次刷新创建一个新存储的代码。 结果出现在xhrPost回调中,并被分配到新的网格商店。 当dojo网格刷新时观察到内存泄漏

refreshGrid(){ 
    if(grid.store!=null) 
    grid.store.close(); 
    var newGridStore = new dojo.data.ItemFileWriteStore({ 
       url:'', 
       data:result, 
       urlPreventCache: false 
      }); 
    grid.setStore(newGridStore); 
} 

以上功能是越来越要求每2秒,我可以在Chrome中看到资料内存增加。
我曾尝试使用这种方式遍历商店,删除所有商品,然后添加新商品,但商店更新时网格被锁定。
哪个是dojo网格刷新的正确方法?

+0

听起来你想实现[实时存储](http://dojotoolkit.org/documentation/tutorials/1.9/realtime_stores/)。 –

回答

1

没有你在做什么看起来粗略,设置存储是要走的路,除非你刷新特定的项目。旧商店最终应该被gc删除,但是只要感觉像这样,它就会删除它,并且直到那一刻你会看到内存使用量的增长。在chrome中,你可以强制垃圾收集器,所以如果你这样做并且你的内存清除了,那么一切都按照预期运行,你可能会经常处理太多的数据。

让我们知道您所看到的性能下降(如果有),您的内存使用量以及您在商店中处理的数据量也可能很有用。

+0

基本上,当应用程序继续运行一天时,它会停止脚本错误,有时会导致浏览器崩溃。 – harris