导航时内存泄漏?

时间:2011-11-14 10:37:26

标签: windows-phone-7 memory-leaks

我创建了一个简单的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。 我一直用Back按钮导航回来。

现在我担心使用图像选择器,bingmaps和大约10个其他页面的更复杂的应用程序将很容易达到90兆的屏障。

所以我的问题是为什么我的测试应用程序会发生这种情况,这是我应该关注的事情吗?

1 个答案:

答案 0 :(得分:2)

每次导航到第二页时,都会创建一个新实例。第一页只有一个实例,因为这是app入口点。 从第二页导航回来后,该实例将变为孤立,因此符合garbage collection的条件。但是,实例不会立即收集,而是在下次运行垃圾收集时释放它(或者可能在后续运行时释放,具体取决于应用程序的内存使用情况)。

我认为你会发现,在你有很多实际仍在使用的对象之前,内存使用量不会增加。您在这里看到的用法是由于很多对象,如果需要可以回收内存。