Chu kỳ không hoạt động ("không làm gì") cũng sẽ hiển thị dưới dạng "(chương trình)" (bạn có thể lập trang SO này trong vài giây và nhận 100% số (chương trình)), vì vậy đây không phải là dấu hiệu của một cái gì đó xấu trong chính nó.
Điều khác là khi bạn thực sự thấy ứng dụng của bạn bị trễ. Sau đó (chương trình) sẽ được đóng góp bởi mã liên kết V8 (và mã WebCore mà chúng gọi, về cơ bản là bất cứ điều gì: hoạt động DOM/CSS, vẽ, cấp phát bộ nhớ và GC, cái gì không.) Nếu trường hợp đó xảy ra, bạn có thể ghi lại Dòng thời gian của ứng dụng của bạn (chuyển sang bảng Timeline
trong Công cụ dành cho nhà phát triển và nhấn nút Record
trong thanh trạng thái dưới cùng, sau đó chạy ứng dụng của bạn trong một thời gian.) Bạn sẽ thấy nhiều sự kiện bên trong với thời gian của chúng dưới dạng thanh ngang . Bạn sẽ thấy các phản xạ, tính toán kiểu, hẹn giờ được kích hoạt, các sự kiện GC và hơn thế nữa (btw, phiên bản Chromium mới nhất có thời gian sử dụng bộ nhớ profiler cải tiến, do đó bạn sẽ có thể theo dõi bộ nhớ được sử dụng bởi các yếu tố nội bộ nhất định.)
Để chẩn đoán các vấn đề về bộ nhớ (nhiều phân bổ dẫn đến nhiều chu kỳ GC đầy đủ), bạn có thể sử dụng bảng điều khiển Profiles
. Chụp nhanh heap trước khi phần mã của bạn bắt đầu, và một đoạn mã khác sau khi mã này đã chạy một thời gian. Sau đó so sánh hai heapshots (SELECT bên phải ở phía dưới) để xem phân bổ đã diễn ra, cùng với tác động bộ nhớ của chúng.
Nguồn
2012-03-05 22:24:05
Bạn có thể muốn kiểm tra javascript của mình cho bất kỳ vòng lặp nào. Thông thường khi bạn có loại sử dụng đó là từ một cái gì đó mà chỉ chạy nhanh như nó có thể trong một vòng lặp. – Developer
Bạn có thể cân nhắc tải lên ảnh chụp màn hình của trình thu thập thông tin. – c69
Bạn có thể thử gỡ lỗi chính trình duyệt .. http://www.mail-archive.com/[email protected]/msg06911.html Nhưng tôi nghi ngờ các điểm nóng của bạn nằm trong DOM/Rendering/other (fileacces ? xhr?), và không phải trong JS. – c69