我创建了一个后台服务,如果有任何新数据,每秒都要向服务器询问。使用调试监视器,我注意到分配的内存正在增长和增长,直到它说内存泄漏。
index.js
var intent = Titanium.Android.createServiceIntent({
url: 'service.js'
});
intent.putExtra('interval', 1000); // Needs to be milliseconds
Titanium.Android.startService(intent);
service.js
var URL = "localhost:8051";
Ti.API.info("checkForNotification: " + URL );
var xhr = Ti.Network.createHTTPClient({
onload: function(e) {
Ti.API.info('onload called, HTTP status = '+this.status);
},
onerror: function(e) {
Ti.API.info('error, HTTP status = '+this.status);
},
timeout:5000 /* in milliseconds */
});
xhr.open('GET', URL);
xhr.send();
到目前为止我所意识到的是xhr.send()的错误,它不会变得干净或者可能是我做错了。 任何人都可以建议,如何避免这种内存泄漏?
答案 0 :(得分:0)
请求超时为5秒,循环时间为1秒......所以很明显它会发送太多的调用,无论它是否带有响应。即使它在5秒之前到来。因此,最好保持跟踪调用并手动释放xhr变量。 或者您可以通过递归以另一种方式执行此操作,意味着当您收到第一个呼叫的响应时再次发送呼叫,等等。