-
Мы можем сделать небольшую корректировку нашего кода во избежание чрезмерного использования памяти.
-
Давайте посмотрим на сравнительный подход.
-
Вместо того, чтобы соединять значение одной ячейки за раз для постройки каждого ряда, давайте использовать
-
образец StringBuilder и построим каждый ряд используя одну строку.
-
Заметьте, что StringBuilder инстанциирован вне цикла и
-
и таким образом память выделяется лишь раз.
-
И тогда мы просто используем его как буфер для
-
каждой итерации цикла, где мы сперва ее чистим, а затем мы добавляем
-
одну строку чисел для того, чтобы отразить ряд для той итерации цикла.
-
Посмотрите заметки инструктора где есть детали этого сегмента кода.
-
Сейчас время проверить все.
-
Загрузите улучшенную ветку кода,
-
которая называется memory_churn_optimized, в поле отслеживания
и в монитор памяти
-
для того, чтобы подтвердить то, что мы
уменьшили количество GC в окне короткого времени.
-
Вы также можете использовать трекер
выделения для проверки.
-
Если вы используете трекер или
-
если вы получили что-то неожиданное
в поле отслеживания или в мониторе памяти
-
Поделитесь скриншотом вашего результата
в форумах для обсуждения.
-
Нам интересно увидеть что у вас получилось.
-
Теперь, для нас, даже с этими изменениями
пират Perf все равно приостанавливается.
-
Но на этот раз на меньшее время.
-
Это также может показать что
эта функция наверное хороший
-
кандидат на переход на задний план.