2011-01-31 3 views
2

Ну я думаю, что я буду иметь, чтобы сделать трилогию, связанные с вопросом о шахте нашли на Out of memory exception while loading imagesРеализация потока, который оборачивает другой поток

Так вот идет вторая часть.

В соответствии с ответами - комментарии, найденные к сообщению, упомянутому выше, рано или поздно на любом компьютере будет отсутствовать память при выполнении моего кода. :(

Но благодаря Google я нашел способ применения WrappingStream Implementation., где по словам писателя

BitmapImage сохраняет ссылку на источник потока (предположительно, так что вы можете прочитать свойство StreamSource в любом случае), поэтому он сохраняет объектMemoryStream. К сожалению, несмотря на то, что MemoryStream.Dispose вызывается, , он не освобождает массив байтов, который обертывает поток памяти. это case, bitmap - это ссылочный поток, , который ссылается на буфер, который может занимать много места на куче крупного объекта . Обратите внимание, что не является истинной утечкой памяти; когда там больше нет ссылок на растровые изображения, все эти объекты будут (в конечном итоге) be сбор мусора. Но так как bitmap уже сделал свою личную копию изображения (для рендеринга), кажется довольно расточительным, чтобы иметь теперь ненужную оригинальную копию растрового изображения , который все еще находится в памяти.

Итак, вот несколько вопросов, которые у меня есть. (И перед тем, как начать голосование, пожалуйста, имейте в виду, что я новичок!)

Могу ли я использовать класс WrappingStream, чтобы избежать ошибок в памяти? Если первый из них является истинным, как я могу принять его и заставить его работать с моим example?

Спасибо

ответ

1

Может я использовать класс WrappingStream, чтобы избежать ошибок из памяти?

Нет, это направлено на другую проблему.

+0

Я пост более полезный ответ на первоначальный вопрос. –

Смежные вопросы