По некоторым причинам, иногда вызов IdleNotification никогда не возвращает true. В документации говорится, что
Необязательное уведомление о том, что устройство для вставки не используется. V8 использует уведомление, чтобы уменьшить объем памяти. Этот звонок можно использовать
несколько раз, если кодировщик остается бездействующим. Возвращает true, если
Embedder должен прекратить вызывать IdleNotification, пока реальная работа не
сделано. Это указывает на то, что V8 сделал столько же очистки, сколько
смогу сделать.
Поэтому, когда IdelNotifcation никогда не возвращает true, это означает, что сборщик мусора в V8 никогда не завершает свою работу.
Поскольку я действительно не могу найти причину такого поведения, я был бы рад, если бы кто-нибудь мог дать мне подсказку, что может вызвать это.
Попробуйте позвонить LowMemoryNotification()
на Isolate
вместо или перед звонком IdleNotification
, Первая функция сообщает V8, что она должна работать, чтобы освободить память. Без этого давления памяти это не заботится о нескольких байтах, которые вы могли бы выделить.
Других решений пока нет …