Искра 2.1.1 Обнаружен утечка памяти [дубликат]

Основное отличие состоит в том, что sorted(some_list) возвращает новый list:

a = [3, 2, 1]
print sorted(a) # new list
print a         # is not modified

и some_list.sort(), сортирует список на месте :

a = [3, 2, 1]
print a.sort() # in place
print a         # it's modified

Обратите внимание, что поскольку a.sort() ничего не возвращает, print a.sort() будет печатать None.


Можно ли восстановить исходные позиции списка после list.sort () ?

Нет, поскольку он изменяет исходный список.

25
задан Daniel Darabos 18 December 2015 в 18:35
поделиться

1 ответ

Короткий ответ заключается в том, что пользователи не должны видеть это сообщение. Пользователи не должны создавать утечки памяти в унифицированном менеджере памяти.

То, что такие утечки происходят, является ошибкой Spark: SPARK-11293


Но если вы хотите понять причину утечки памяти, вот как я это сделал.

  1. Загрузите исходный код Spark и убедитесь, что вы можете его построить, и ваша сборка работает.
  2. В TaskMemoryManager.java добавьте дополнительные записи в acquireExecutionMemory и releaseExecutionMemory: logger.error("stack trace:", new Exception());
  3. Измените все остальные журналы отладки на ошибку в TaskMemoryManager.java. (Легче, чем вычисление конфигураций протоколирования ...)

Теперь вы увидите полную трассировку стека для всех распределений и освобождений. Постарайтесь сопоставить их и найти распределения без освобождения. Теперь у вас есть трассировка стека для источника утечки.

23
ответ дан Daniel Darabos 24 August 2018 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: