Threaded View
-
29 May 2012 12:12 AM #1
Store.destroy() doesn't remove store from stores's cache (Ext.StoreManager.map)
Store.destroy() doesn't remove store from stores's cache (Ext.StoreManager.map)
REQUIRED INFORMATION
Ext version tested:- Sencha 2.0.1
- Chrome 19.0
- When a store is created it is added to Ext.StoreManager.map by storeId as a key.
- However store.destroy() doesn't remove it from the store's cache. So, the longer the application is used, the more memory is consumed as none of stores is actually released.
- Calling Ext.StoreManager.unregister(store.getStoreId()) explicitly removes store reference from the cache. However I suppose that this should be done in destroy() method as even DataView relies on it when updating store to new (DataView.updateStore()) or am I missing anything?
- Create a store
- Check Ext.StoreManager.map -> store is added
- Call store.destroy()
- Check Ext.StoreManager.map -> store is still there, only isDestroyed flag is set to true
Thank you in advance,Code:Ext.define('User', { extend: 'Ext.data.Model', config: { fields: [ {name: 'firstName', type: 'string'}, {name: 'lastName', type: 'string'}, {name: 'age', type: 'int'}, {name: 'eyeColor', type: 'string'} ] } }); var data = [ {firstName: 'Ed', lastName: 'Spencer'}, {firstName: 'Tommy', lastName: 'Maintz'}, {firstName: 'Aaron', lastName: 'Conran'}, {firstName: 'Jamie', lastName: 'Avins'} ]; var store1 = Ext.create('Ext.data.Store', { model: 'User', storeId: 'test-store-1', data : data }); Ext.StoreManager.map // 'test-store-1' is added to cache store1.destroy() Ext.StoreManager.map // 'test-store-1' is still in cache //// var store2 = Ext.create('Ext.data.Store', { model: 'User', storeId: 'test-store-2', data : data }); store2.autoDestroy = true; var touchTeam = Ext.create('Ext.DataView', { fullscreen: true, store: store2, itemTpl: '{name} is {age} years old' }); Ext.StoreManager.map // 'test-store-2' is in cache var store3 = Ext.create('Ext.data.Store', { model: 'User', autoDestroy: true, storeId: 'test-store-3', data : data }); touchTeam.setStore(store3) Ext.StoreManager.map // 'test-store-2' is still in cache though shouldn't, as expected to be destroyed
Regards
Success! Looks like we've fixed this one. According to our records the fix was applied for
TOUCH-2942
in
Sprint 22 (2.0.2).


Reply With Quote