Имеет ли смысл кэширование для экономии памяти перед лицом замены операционной системой? - PullRequest
1 голос
/ 01 января 2012

Отказ от ответственности: я очень мало знаю об управлении памятью или производительности, и я пишу на C #.

Вопрос:

"кэширует" ли данные среднего размера (порядка, скажем, десятки МБ), особенно media , которые будут отправляться в любое время на устройство (аудио и изображения), на диске (вместо того, чтобы «хранить его в (виртуальной) памяти»), перед лицом того факта, что любая ОС будет перезаписывать (возможно, «страница» - правильное слово) неиспользуемую память на диск?

Возможно, это не совсем понятно, поэтому я выложу примеры.
В основном это связано с пользовательскими интерфейсами, а не с сетевым вводом-выводом .

Примеры того, о чем я говорю:

  • Приложение FooSlideshow может хранить слайды на диске вместо того, чтобы выделять для них виртуальную память.
  • BarGame может хранить звуки различных, многочисленных событий на диске и загружать их для воспроизведения.
  • BazRenderer может хранить растровые изображения нескольких слоев в составном изображении, если они не подвержены постоянному изменению (если изменяется только один слой, остальные нужно просто прочитать с диска).

Примеры того, о чем Я не говорю:

  • FooPlayer кэширует буфер песни во время потоковой передачи с сервера.
  • BarBrowser кэширует изображения, потому что пользователь может посетить одну и ту же страницу.

Почему я должен заботиться:

Потому что, скажем, в режиме слайд-шоу при отображении в полноэкранном режиме на экране 1024x768 с 32 битами на пиксель 1024 * 768 * 32 байта = 3 МБ ( 8 МБ для экрана HD). Так что для слайд-шоу из 10 слайдов это будет 30-80 МБ только для кэширования изображений. Короткая песня, преобразованная в 16-битную выборку 44,1 кГц (качество CD), также в среднем весит.

Из моего кода C # (но это может быть Java, Python и т. Д.), если я буду заботиться о о создании сложной системы кэширования для освобождения памяти, когда это возможно, или я должен доверять ОС чтобы поменять это? (И результат будет таким же? Один подход будет лучше другого? Почему?)

...