Я работаю с командой над одностраничным приложением с довольно большим количеством таймеров и около 10 вызовов API REST в секунду. Мы использовали инструменты профилирования памяти Chrome для выявления всех утечек памяти - в этот момент размер кучи остается примерно одинаковым (то есть между сборками мусора).
Однако мы отмечаем, что чем дольше приложение работает, тем больше памяти использует сама вкладка Chrome. Через несколько часов мы увидели, что память вкладок выросла до 350 МБ, а размер кучи остался на уровне 6 МБ. При работе в течение ночи вкладка занимает более 500 МБ и становится недоступной к утру.
Нам нужно, чтобы приложение работало в течение длительного времени (мы надеемся перезапустить его только один раз в неделю), поэтому это проблема.
Вот скриншот временной шкалы кучи за час. В итоге размер закрытой памяти вкладки составляет 350 МБ, а размер кучи остался на уровне около 5,4 МБ.
Мы видели это в Chrome 40 и Chrome 38 в Windows 7. У нас отключено кэширование, и приложение работает в режиме инкогнито.
Любая идея, почему объем памяти вкладок будет расти до такой степени, что Chrome будет непригодным для использования, в то время как использование кучи JS остается таким маленьким?
ОБНОВЛЕНИЕ: Мы запустили приложение в течение нескольких дней, и объем памяти вкладок составляет до 800 МБ, размер кучи остается примерно таким же.
ОБНОВЛЕНИЕ (9/9/15): Я не уверен, документировано ли это где-либо, но кажется, что Chrome изменяет объем памяти, который он выделит для вкладки, в зависимости от объема свободной памяти в системе, Таким образом, если у вас много свободной памяти, вкладки будут использовать много памяти, а если у вас ее мало, она не будет использовать столько же. Похоже, что это не пропорционально размеру кучи, это, вероятно, просто то, что Chrome хранит, чтобы сделать себя быстрее. Это только теория, основанная на мониторинге использования памяти Chrome :)