Утечка памяти при навигации? - PullRequest
1 голос
/ 14 ноября 2011

Я создал простое приложение wp7, которое содержит 2 страницы с кнопкой и изображением на ней (и 2 бессмысленными переключателями).:

<!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <RadioButton Content="RadioButton" Height="80" Name="radioButton1" VerticalAlignment="Top" Margin="0,0,268,0" />
        <RadioButton Content="RadioButton" Height="80" HorizontalAlignment="Left" Margin="231,0,0,0" Name="radioButton2" VerticalAlignment="Top" Width="204" />
        <Button Content="Button" Height="97" HorizontalAlignment="Left" Margin="137,510,0,0" Name="button1" VerticalAlignment="Top" Width="331" Click="button1_Click"/>
        <Image Height="418" HorizontalAlignment="Left" Margin="12,86,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="444" Source="http://brucew.files.wordpress.com/2011/10/stones-some-girls.jpg"/>
    </Grid>

А при навигации назад и вперед потребление памяти увеличивается до 30-35. Я все время возвращаюсь назад с кнопкой Назад.

Теперь я боюсь, что более сложное приложение с селектором изображений, bingmaps и еще примерно 10 другими страницами довольно легко достигнет 90-мегабаритного барьера.

Итак, мой вопрос: почему это происходит с моим тестовым приложением, меня это должно беспокоить?

1 Ответ

2 голосов
/ 14 ноября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...