При обработке некоторого потока данных, например запросов из сети, довольно часто используется некоторая временная память. Например, URL-адрес может быть разделен на несколько строк, каждый из которых, возможно, выделяет память из кучи. Использование этих объектов часто недолговечно, и общий объем памяти часто является относительно небольшим и должен вписываться в кеш процессора.
В момент, когда освобождается память, используемая для временной строки, содержимое строки может очень хорошо проживать только в кеше. Однако CPU не осознает освобождение памяти: освобождение - это просто обновление в системе управления памятью. В результате ЦП может в конечном итоге записать ненужный контент без необходимости в фактическую память, когда кэш ЦП используется для другой памяти, если только релиз памяти не указывает на то, что память больше не используется. Следовательно, возникает вопрос:
Предоставляют ли функции управления памятью освобождение памяти, что содержимое соответствующей памяти может быть отброшено? Есть ли способ указать CPU, что память больше не используется? (по крайней мере, для некоторых процессоров: может быть, очевидно, различия между архитектурами). Поскольку различные реализации, вероятно, будут отличаться по качеству и могут или не могут сделать что-то фантастическое, вопрос действительно в том, есть ли какая-либо реализация управления памятью, указывающая на память как неиспользованную
Я понимаю, что всегда использование одной и той же арены памяти может быть стратегией смягчения, чтобы избежать ненужной записи в фактическую память. В этом случае будет использоваться одна и та же кэшированная память. Аналогичным образом, вполне вероятно, что распределение памяти всегда дает одну и ту же память, что также позволяет избежать ненужных передач памяти. Однако, возможно, мне не нужно полагаться на применение любого из этих методов.