問候,
我一直在爲使用8位微控制器的某些硬件開發Web界面。該網頁使用HTML,JavaScript,JSON和XHR(XMLHttpRequest)進行通信。我想要做的是創建一個頁面,每隔250mS更新控制器的新值,使用setInterval,以便網頁實時更新,使其更像是一個應用程序。使用XMLHttpRequest自動網頁刷新內存泄漏
我已經完成了它的大部分工作,但發現代碼中存在內存泄漏,包括我測試過的兩種瀏覽器,IE和Chrome。
我在網上研究過,看起來像其他人有同樣的問題,我試圖執行不同的修復,但沒有成功。
下面是一些代碼快照,希望能夠更好地解釋一些事情,我修改了變量,使它們在沒有看到完整應用程序的情況下變得更有意義。
// start the pageRefreshTimer to update values
var pageRefreshTimer = window.setInterval(updateValues, 250);
// Standard XHR opener
HTTP.getText = function(url, callback) {
var request = HTTP.newRequest(); // Searches array of standard XMLHttpRequest functions to try, code not shown...
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
callback(request.responseText) // responseText becomes JSONText below
}
}
request.open("GET", url);
request.send(null);
}
// Function that is constantly refreshed by HTML page to simulate real-time application
updateValues = function(parameter, value) {
newURL = newURL + "?" + parameter; // newURL is defined elsewhere in the code...
// Send the url and create the JSONObject
HTTP.getText(newURL, function(JSONText) {
var JSONObject = eval('(' + JSONText + ')'); // Specific notation for JSON
// Load object values into Javascript variables
Controller.detectorPosition = JSONObject.detectorPosition;
Controller.offset = JSONObject.offset;
Controller.actuatorPosition = JSONObject.actuatorPosition;
});
delete JSONObject; // My attempt at manual garbage collection, didn't resolve the memory leak
}
供您參考,會從微控制器發送到瀏覽器會是這個樣子的JSON文件...
{ "offset": "1500",
"detectorPosition": "1558",
"actuatorPosition": "120" }
這是否看起來像一個問題,在「倒閉潮」代碼?
使用Chrome中的開發工具(Ctrl-Shift-J),我注意到有多個對ParameterValues.json文件(350B大小)的調用,因爲這是存儲來自微控制器;但瀏覽器以某種方式在內存中存儲/緩存每個頁面?
附加在我的評論是兩個屏幕截圖的問題。第二個是我在XMLHttpRequest循環中設置斷點的地方,看起來右邊的「closure」面板中有一個循環引用。任何人都看到這個問題?
我能做些什麼來深入挖掘並獲得更多信息?
在此先感謝!
Chrome快照:http://i55.tinypic.com/fuyzaw.png – Lemtronix 2010-10-05 14:02:01
這是Chrome的開發者工具的另一個屏幕快照。我在XMLHttpRequest循環中設置了一個斷點,看起來右邊的「閉包」面板中有一個循環引用。 http://i54.tinypic.com/qyzprt.png – Lemtronix 2010-10-05 18:29:11