我创建了一个简单的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兆的屏障。
所以我的问题是为什么我的测试应用程序会发生这种情况,这是我应该关注的事情吗?
答案 0 :(得分:2)
每次导航到第二页时,都会创建一个新实例。第一页只有一个实例,因为这是app入口点。 从第二页导航回来后,该实例将变为孤立,因此符合garbage collection的条件。但是,实例不会立即收集,而是在下次运行垃圾收集时释放它(或者可能在后续运行时释放,具体取决于应用程序的内存使用情况)。
我认为你会发现,在你有很多实际仍在使用的对象之前,内存使用量不会增加。您在这里看到的用法是由于很多对象,如果需要可以回收内存。