2013-07-03 53 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