Поделиться через


Изменение размера пула плиток

Измените размер пула плиток, чтобы увеличить пул плиток, если приложению требуется более рабочий набор для сопоставления ресурсов потоковой передачи или уменьшить, если требуется меньше места. Другим вариантом для приложений является выделение дополнительных пулов плиток для новых ресурсов потоковой передачи. Но если для одного ресурса потоковой передачи требуется больше места, чем изначально доступно в пуле плиток, увеличение пула плиток является хорошим вариантом. Ресурс потоковой передачи не может одновременно сопоставляться с несколькими пулами плиток.

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

Когда пул плиток устаревает, плитки удаляются из конца. Плитки удаляются даже ниже начального размера выделения до 0, что означает, что новые сопоставления не могут быть сделаны мимо нового размера. Но существующие сопоставления после окончания нового размера остаются неизменными и пригодными для использования. Драйвер отображения будет хранить память, пока не будут сопоставляться с любой частью выделения, используемой драйвером для памяти пула плиток. Если после сжатия некоторой памяти сохраняется в живых, так как сопоставления плиток указывают на нее, а затем пул плиток повторно увеличивается (по любому объему), существующая память повторно используется перед тем, как любые дополнительные выделения будут использоваться для обслуживания размера операции увеличения.

Чтобы сохранить память, приложению нужно не только уменьшить пул плиток, но и удалить или повторно сопоставить существующие сопоставления в конце нового меньшего размера пула плиток.

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

Сопоставления находятся в пуле плиток