Любой способ намекать / принудительно собирать мусор на узле Google Cloud Function - PullRequest
0 голосов
/ 19 июня 2020

У меня есть облачная функция Google, которой не хватает памяти, хотя в этом и не должно быть необходимости.

Функция компилирует информацию из нескольких электронных таблиц, таблицы большие, но обрабатываются последовательно. По сути, функция выполняет:

spreadsheets.forEach(spreadsheet => {
   const data = spreadsheet.loadData();
   mainSpreadsheet.saveData(data);
});

Данные отбрасываются на каждом l oop, поэтому сборщик мусора может очистить память, но на практике этого не происходит, и процесс сбой близко к концу.

Я вижу из других ответов, что можно принудительно выполнить сборку мусора или даже предотвратить перераспределение памяти узлом

Однако оба из них включают аргументы командной строки, которыми я не могу управлять с помощью облачной функции. Есть ли какое-то решение, или я застрял на этом как на проблеме при использовании Google Cloud Functions?

1 Ответ

0 голосов
/ 19 июня 2020

Коллега сообщил мне, что изменение кода на

spreadsheets.forEach(spreadsheet => {
   let data = spreadsheet.loadData();
   mainSpreadsheet.saveData(data);
   data = null;
});

может быть достаточно, чтобы дать понять G C, что он может очистить эту структуру.

Я был настроен скептически , но теперь функция работает до завершения. Оказывается, вы можете намекнуть на G C в узле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...