Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory leaks Sencha Touch 2.1存储加载内存泄漏_Memory Leaks_Load_Store_Sencha Touch 2.1 - Fatal编程技术网

Memory leaks Sencha Touch 2.1存储加载内存泄漏

Memory leaks Sencha Touch 2.1存储加载内存泄漏,memory-leaks,load,store,sencha-touch-2.1,Memory Leaks,Load,Store,Sencha Touch 2.1,我在加载存储和泄漏内存时遇到问题。我有一个商店,我需要每5秒加载一次。我正在使用DelayedTask执行轮询。此应用程序需要轮询,并将运行很长时间。该商店收回了一个相当大的JSON数据集,几小时后数据量达到了500MB。我在控制器中执行轮询 我已经把所有的逻辑都剥离出来了,只不过是加载了商店而已。无论我使用DelayedTask还是setInterval,泄漏都是一样的。我已经找到了store.load逻辑。至少我想我有。:) 我还从存储加载中删除了回调,并在加载事件侦听器中执行了task.d

我在加载存储和泄漏内存时遇到问题。我有一个商店,我需要每5秒加载一次。我正在使用DelayedTask执行轮询。此应用程序需要轮询,并将运行很长时间。该商店收回了一个相当大的JSON数据集,几小时后数据量达到了500MB。我在控制器中执行轮询

我已经把所有的逻辑都剥离出来了,只不过是加载了商店而已。无论我使用DelayedTask还是setInterval,泄漏都是一样的。我已经找到了store.load逻辑。至少我想我有。:)

我还从存储加载中删除了回调,并在加载事件侦听器中执行了task.delay。泄漏仍然存在

所以,我不知道我是否做错了,引入了闭包,或者这是一个bug

我还使用Ext.Ajax每5秒提取一次数据。内存泄漏仍然存在,但要小得多

感谢您的帮助

型号:

Ext.define('fimobile.model.myModel', {
    extend: 'Ext.data.Model',

    config: {
        fields: [
            {name: 'a', type: 'string'},
            {name: 'b', type: 'string'},
            {name: 'c', type: 'string'},
            {name: 'd', type: 'string'},
            {name: 'e', type: 'string'},
            {name: 'f', type: 'string'},
            {name: 'g', type: 'string'},
            {name: 'h', type: 'string'},
            {name: 'i', type: 'string'},
            {name: 'j', type: 'string'}
        ]
    }
});
商店:

Ext.define('fimobile.store.myStore', {
    extend: 'Ext.data.Store',
    config: {
        storeId: 'myStoreID',
            model: 'app.model.myModel',
        proxy: {
        type: 'ajax',
        url : url,
        reader: {
            type: 'json',
            rootProperty: 'data',
            successProperty: 'success'
        }
        },  
        autoLoad: true
    }
});
控制器:

Ext.define('fimobile.controller.myController', {
    extend: 'Ext.app.Controller',

    config: {
        views: ['myView'],
        models: ['myModel'],
        stores: ['myStore'],
        refs: {  
        },
        control: { 
            'myView': {
                initialize: this.start
            }
        }
    },

    start: function () {        
        task = Ext.create('Ext.util.DelayedTask', function() {      
            this.getData();
        }, this);
        task.delay(5000);
    },

    getData: function() {               
        Ext.getStore('myStore').load({
            scope: this,
            callback : function(records, operation, success) {
                console.log('callback');
                task.delay(5000);
            }
        });
     }
});

你为什么不把这个贴在虫子Sencha论坛上?测试bug是否更合理?

也许您在这里没有引用这一事实意味着您每次调用getData()时都在创建一个新实例。。。可能使用:myStore=Ext.getStore('myStore');myStore.load(…);而是重复使用引用,而不是每次都创建新的匿名引用感谢Dawesi的反馈。我确实在他们的论坛上发了帖子。但无法确定根本原因。我已经对代码进行了重构,使用Ext.Ajax来提取数据,现在不使用存储。我对API也有了更好的理解,不久将重新讨论这个问题。如果我找到答案,我会把它贴出来。