5

Tôi đã sử dụng chế độ xem Chrome's Timeline để cố gắng theo dõi một số rò rỉ bộ nhớ trong trang của mình. Tôi đã tìm thấy một rò rỉ bộ nhớ cụ thể mà kết quả từ instantiating web công nhân mà tôi dường như không thể tìm ra cách để thoát khỏi.Rò rỉ bộ nhớ Web của người lao động?

Tôi đã xóa trang để chỉ tải nhân viên web và không làm gì khác. Mỗi khi tôi làm mới trang, Số lượng tài liệu trên chế độ xem dòng thời gian của Chrome sẽ tăng vĩnh viễn bằng 1. Nếu tôi nhận xét cuộc gọi tới hàm tạo Công nhân và bắt đầu làm mới trang, số lượng tài liệu tăng và sau đó giảm, giữ nguyên hiệu quả. Tự chấm dứt/đóng nhân viên không giải quyết được vấn đề (mặc dù tôi có thể thấy nhân viên biến mất khi tôi nhìn vào tab Nguồn của công cụ nhà phát triển).

Đây là tệp .htm được cắt bớt của tôi. Tôi có thể tạo lại vấn đề chỉ với đoạn mã html/javascript ngắn này:

<html> 
<script type="text/javascript"> 
var worker_blob = new Blob(["var test = 1;"]); 
var worker_url = window.URL.createObjectURL(worker_blob); 
// Comment out the line below and the memory leak goes away 
var worker = new Worker(worker_url); 
window.URL.revokeObjectURL(worker_url); 
</script> 
</html> 
+0

Khi nhân viên của bạn hoàn thành nhiệm vụ, nó có thể tự động đóng [https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWorkerScope#close()) hoặc trang của bạn có thể gọi là 'terminate'. –

+0

Tôi đã thử cả hai và không khắc phục được sự cố. Ngoài ra, công nhân nên được chấm dứt khi tôi rời khỏi trang. –

+2

Đây có phải là cơ hội https://code.google.com/p/chromium/issues/detail?id=181680 không? –

Trả lời

3

Đây là lỗ hổng bộ nhớ trong Chrome v25. Dường như nó được khắc phục trong Chrome v26, vì vấn đề này không còn có thể được sao chép nữa.