Здравствуйте. Столкнулся с проблемой, объясню на простом примере.
Есть вторичное окно с Image. При появлении, окно создаёт BitmapImage из изображения, путь которого передаётся конструктору окна, а затем устанавливает BitmapImage как Source у Image:

private string _path; //путь к файлу
...
var bitmapImage = new BitmapImage();
using (var stream = File.OpenRead(_path)) // получаю FileStream и устанавливаю как StreamSource у BitmapImage
{
    bitmapImage.BeginInit();
    bitmapImage.StreamSource = stream;
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.EndInit();
    stream.Close();
}
bitmapImage.Freeze();

Image.Source = bitmapImage;

Окно появляется с изображением всё хорошо, но после закрытия окна ресурсы используемые ранее не освобождаются и приложение постепенно начинает использовать в пустую всё больше и больше памяти. С учётом того что изображения бывают не малого размера используемая память может вполне увеличиваться на 25МГ за одно открытие окна!!!!!
Может кто нибудь сталкивался с данной проблемой и знает как её решить или по крайней мере уменьшить)) Буду весьма признателен.