Tôi đã tìm thấy điều này trên tất cả các trình duyệt được thử nghiệm - IE, Firefox, Chrome và Safari trên Window Safari Safari trên Apple.làm mới trình duyệt không làm bộ sưu tập rác
Bị cáo buộc, làm mới trình duyệt, nút quay lại hoặc liên kết chuyển tiếp sẽ đổ nút trình duyệt và biến và đối tượng javascript, v.v. Điều này có vẻ không đúng đối với WebGL. Lần đầu tiên tôi nhận thấy nó khi phát triển một ứng dụng WebGL phức tạp đòi hỏi khoảng 100MB đến 200MB bộ nhớ. Trong khi phát triển, tôi phải làm rất nhiều làm mới và máy tính của tôi sẽ bắt đầu chậm lại và đóng băng sau 5-10 lần làm mới.
Sau khi một số nghiên cứu tôi nhận ra rằng điều này không nên. Các giải pháp được chấp nhận trong một rò rỉ bộ nhớ là làm mới trang mà nên giải phóng tất cả các đối tượng javascript và các biến và các nút dom. Nhưng hãy xem các hình ảnh sau:
Vì vậy, thỏa thuận ở đây là gì? Trên các ứng dụng nhỏ nó không được nhận thấy, nhưng đối với các ứng dụng WebGL lớn như của tôi (orbitingeden.com) đây là một vấn đề thực sự và người dùng của tôi sẽ nghĩ rằng phần mềm thậm chí còn nhiều hơn một con heo tài nguyên hơn nó thực sự là. Những hình ảnh sau đây cho thấy những làm mới ngấu nghiến tất cả các bộ nhớ có sẵn của tôi, vì vậy thu gom rác thải không hoạt động và/hoặc JS và DOM đối tượng không được phát hành:
http://orbitingeden.com/images/big_memory_after.png
Không ai biết của một thủ thuật để buộc các trình duyệt để làm một bãi chứa bộ nhớ thực sự? Tại sao tất cả tài liệu ra có sai?
https://bugs.webkit.org/show_bug.cgi?id=76225 – gman
@gman: nếu bạn trả lời câu hỏi, tôi sẽ cung cấp cho bạn tín dụng. Tóm tắt: WebGL sử dụng ngữ cảnh được lưu trữ theo tên miền và tab, không liên quan đến trang cụ thể (làm mới). Kết quả là, mọi bộ nhớ được phân bổ cho việc hiển thị WebGL sẽ không được giải phóng để thu thập rác cho đến khi người dùng điều hướng khỏi miền cơ sở hoặc đóng tab. Một sửa chữa có thể là thêm nút thoát vào ứng dụng chuyển hướng nhanh đến miền mới chuyển hướng ngược lại. –
Lỗi này sẽ được sửa vào bất kỳ ngày nào, vì vậy hy vọng sẽ không cần phải giải quyết sớm. Có thực sự là một thử nghiệm cho điều này trong các bài kiểm tra sự phù hợp webgl (https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/context/context-creation-and-destruction. html) – gman