我有一個導致內存泄漏(特別是在IE)的ajax代碼。ajax中的內存泄漏 - setInterval
function setStatus() {
var formInput=$(this).serialize();
$.getJSON('CheckStatus.action', formInput, function(data) {
if(data == false) {
function getEventsPeriodicaly() {
getEvents();
};
var timer = setInterval(function() {getEventsPeriodicaly();}, 5000);
}
}
);
}
function getEvents() {
var formInput=$(this).serialize();
$.getJSON('StartEP.action', formInput,function(data) {
var txt = $("#txtEventsArea");
if(data != null && data.toString().length!=0) {
txt.val(data.join('\n') + '\n' + txt.val());
data=null;
}
}
)}
StartEP
public String startEP() throws Exception {
logger.info("[EP] In startEP");
try {
synchronized(status) {
if(!getStatus()) {
EventProcessor amiep = EventProcessor.getInstance();
amiep.addObserver(this);
new Thread(amiep).start();
setStatus(true);
}
}
} catch (Exception ex) {
logger.error("Unable to start EP", ex);
return ERROR;
}
logger.info("[EP] In startEP, before loop");
while(!gotNewData) {
Thread.sleep(4000);
}
gotNewData = false;
logger.info("[EP] Out startEP");
return SUCCESS;
}
的StartEP動作(對每個請求約5KB)返回消息。首先,我認爲它涉及到將文本設置爲textarea,但經過一些測試後得出結論並非如此。它可以是setInterval方法嗎? 有什麼注意事項嗎? 感謝
題外話:你爲什麼在'setInterval'中爲'_Event'封裝__two__額外的函數? 'setInterval(getEvents,5000)'。話題方面:我沒有看到任何應該泄漏的東西 –
還有另一個功能,它將來還會調用getEvents。 –
這與包裝'getEvents'兩次有什麼關係? –