У мене є досить складний додаток Javascript, який має основний цикл, який викликається 60 разів на секунду. Здається, відбувається багато збору сміття (на основі виведення «пилоподібного» з часової шкали пам'яті в інструментах розробника Chrome) - і це часто впливає на продуктивність програми.
Отже, я намагаюся дослідити найкращі практики зменшення обсягу роботи, яку повинен робити збирач сміття. (Більшість інформації, яку мені вдалося знайти в Інтернеті, стосується уникнення витоків пам’яті, що є дещо іншим питанням - моя пам’ять звільняється, просто збирається сміття занадто багато.) Я припускаю що це здебільшого зводиться до повторного використання об’єктів якомога більше, але, звичайно, диявол полягає в деталях.
Додаток побудований у "класах" за зразком простої спадщини JavaScript Джона Резіга .
Я думаю, одна проблема полягає в тому, що деякі функції можна викликати тисячі разів на секунду (оскільки вони використовуються сотні разів під час кожної ітерації основного циклу), і, можливо, локальні робочі змінні в цих функціях (рядки, масиви тощо) може бути проблема.
Мені відомо про об'єднання об'єктів для більших / важчих об'єктів (і ми використовуємо це в певній мірі), але я шукаю методики, які можна застосувати загалом, особливо стосовно функцій, які дуже часто викликаються у вузьких циклах .
Які прийоми я можу використати, щоб зменшити обсяг роботи, яку повинен робити сміттєзбірник?
І, можливо, також - за допомогою яких методів можна визначити, які об’єкти найбільше збирають сміття? (Це набагато велика кодова база, тому порівняння знімків купи не було дуже плідним)