Почему при создании нового пустого среза переполняется память? - PullRequest
0 голосов
/ 10 ноября 2019

Я писал довольно большой CSV-файл и не хватало памяти.

У меня изначально были настройки выделения и цикла как таковые, что вызвало ошибку out of memory.

for ; someCondition ; {
    // this will be garbage collected after each iteration, right?
    csv := make([][]string, 100000)

    // do stuff w/csv here, like csv[0] = something
}

Я, наконец, попытался повторно использовать тот же [][]string, как это было, и это решило проблему.

csv := make([][]string, 100000)
for ; someCondition ; {
    // do stuff w/csv here...
    csv[0] = something
}

Была ли каждая переменная, назначенная make() в первом подходе, не мусором, собранным после каждой итерации цикла?

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