Tôi liên tục tìm nạp một đối tượng JSON từ máy chủ có các cuộc gọi AJAX. Theo thời gian, việc sử dụng bộ nhớ của trình duyệt tăng lên (đã thử với Chrome, Safari, Firefox). Sử dụng ảnh chụp nhanh heap của Chrome, tôi đã phát hiện ra rằng các chuỗi dấu thời gian đang được để lại xung quanh không có tham chiếu. Nếu tôi chụp một chuỗi ảnh chụp nhanh, tôi thấy số lượng Chuỗi liên tục tăng lên.Rò rỉ bộ nhớ với các yêu cầu AJAX + jQuery
$(function() {
var latestTimestamp = 0;
function fetchData() {
$.get("/parameter?format=json&since=" + latestTimestamp, gotData)
}
function gotData(data) {
latestTimestamp = data['timestamp'];
setTimeout(fetchData, 250);
}
fetchData();
});
ghi chú khác:
- Tôi đang sử dụng jQuery 1.7.1. EDIT: Chỉ cần thử với 1.6.2 và 1.4.2, cùng một vấn đề.
timestamp
trong đối tượng JSON thực sự là một số nguyên chứ không phải là một chuỗi. Vì vậy, các chuỗi tích lũy có thể là giá trị tạm thời?- Xóa
+ latestTimestamp
khỏi yêu cầu AJAX sẽ ngừng rò rỉ. - Cài đặt thời gian chờ nhanh hơn (20ms) làm cho rò rỉ nhanh hơn. Tôi nghĩ rằng thời gian chờ nhanh có thể là để đổ lỗi, vì vậy tôi cắt nó trở lại 250ms, nhưng điều đó đã không giúp đỡ.
@Vega fetchData là đã có trong mã;) (dòng 4) – Dave
lẽ JQuery sẽ thích $ .get ("/ tham số", {định dạng: "json", vì: latestTimestamp}, gotData); – nikoshr
@nikoshr Ý tưởng hay. Chỉ cần thử nó, nhưng nó vẫn rò rỉ. – Dave