Tôi có một ứng dụng Javascript khá phức tạp, có một vòng lặp chính được gọi là 60 lần mỗi giây. Có vẻ như có rất nhiều bộ sưu tập rác đang diễn ra (dựa trên đầu ra 'răng cưa' từ dòng thời gian Bộ nhớ trong các công cụ dành cho nhà phát triển Chrome) - và điều này thường ảnh hưởng đến hiệu suất của ứng dụng.
Vì vậy, tôi đang cố gắng nghiên cứu các phương pháp hay nhất để giảm bớt khối lượng công việc mà người thu gom rác phải làm. (Hầu hết thông tin tôi có thể tìm thấy trên web đều liên quan đến việc tránh rò rỉ bộ nhớ, đây là một câu hỏi hơi khác - bộ nhớ của tôi đang được giải phóng, chỉ là có quá nhiều rác đang diễn ra.) rằng điều này chủ yếu là để tái sử dụng các đồ vật càng nhiều càng tốt, nhưng tất nhiên ma quỷ nằm ở chi tiết.
Ứng dụng được cấu trúc theo 'lớp' dọc theo Dòng Kế thừa JavaScript đơn giản của John Resig .
Tôi nghĩ một vấn đề là một số hàm có thể được gọi hàng nghìn lần mỗi giây (vì chúng được sử dụng hàng trăm lần trong mỗi lần lặp lại của vòng lặp chính) và có lẽ các biến làm việc cục bộ trong các hàm này (chuỗi, mảng, v.v.) có thể là vấn đề.
Tôi biết về việc gộp đối tượng cho các đối tượng lớn hơn / nặng hơn (và chúng tôi sử dụng điều này ở một mức độ), nhưng tôi đang tìm kiếm các kỹ thuật có thể áp dụng trên diện rộng, đặc biệt là liên quan đến các hàm được gọi rất nhiều lần trong các vòng lặp chặt chẽ .
Tôi có thể sử dụng những kỹ thuật nào để giảm bớt khối lượng công việc mà người thu gom rác phải làm?
Và, có lẽ cũng vậy - những kỹ thuật nào có thể được sử dụng để xác định đối tượng nào đang được thu gom rác nhiều nhất? (Đó là một cơ sở mã lớn cực kỳ lớn, vì vậy việc so sánh các ảnh chụp nhanh của đống không được hiệu quả lắm)