5

Tôi muốn tìm cách, trong bất kỳ trình duyệt dành cho máy tính để bàn nào, để xác định đối tượng được phân bổ JavaScript nào đang được giải phóng bằng cách thu thập rác. Xin lưu ý, tôi là không phải cố gắng theo dõi "rò rỉ". Rò rỉ là các đối tượng đã làm không phải là được giải phóng.Xác định đối tượng JavaScript nào được giải phóng bởi GC

Trong Firefox, ứng dụng web mà tôi thỉnh thoảng nhìn thấy (dừng phản hồi các lần nhấn phím trong> 1 giây); profiling tiết lộ rằng trong thời gian đó, trình duyệt đang thực hiện một GC dài. Trong vài giây trước đó, một lượng đáng kể bộ nhớ đã được thêm vào (trong các khối nhỏ, không phải tất cả cùng một lúc). Khi GC xảy ra, hầu như tất cả bộ nhớ đó được giải phóng.

Điều tôi đang cố gắng tìm ra là: Tuy nhiên, tất cả các đối tượng sống ngắn này? Tôi rất muốn biết giá trị của họ, loại của họ, hoặc ở đâu trong JS họ đã được phân bổ.

Ứng dụng web trưng bày các mẫu phân bổ tương tự này trong tất cả các trình duyệt (mặc dù chỉ có Firefox dường như bị GC dài); vì vậy tôi sẽ vui vẻ sử dụng bất kỳ trình duyệt (Mac hoặc Windows) để gỡ lỗi này.

Tôi đã tìm hiểu cách sử dụng công cụ dev của Chrome để xem bị rò rỉ đối tượng, nhưng như tôi đã đề cập ở trên, rò rỉ không phải là mối quan tâm của tôi. Tôi không thể tìm ra cách để xem những đồ vật nào được phân bổ và sau đó được giải phóng.

Trả lời

0

GC chỉ là phần cuối của vòng đời. Lúc đầu có phân bổ.

Vì vậy, thay vì cố gắng tìm ra những gì được thu thập, bạn có thể sử dụng bản ghi phân bổ của devtools.

+0

Bạn có thể đưa ra ví dụ về ý của bạn không? Nếu bạn đang nói về nút "Record Heap Allocations", làm thế nào tôi có thể sử dụng nó để hiển thị cho tôi tất cả các phân bổ (bao gồm cả những người mà cuối cùng nhận được GC'd)? –

+0

https://developer.chrome.com/devtools/docs/javascript-memory-profiling#object-allocation-tracker – the8472

+0

ít nhất phiên bản FF dev phải có bản ghi ngăn xếp phân bổ quá – the8472

Các vấn đề liên quan