silverlight内存消耗问题求助
之前做了一个SilverLight的项目,我的做法是要在MainView中展示某个页面的时候是先将现在显示在MainView中的页面绑定的数据置null,并将注销其注册的事件,再通过MainView中的Grid.children.clear()方法清理掉,然后新new一个要展示的页面对象,把它加到主页面中的grid。children中,由于水平问题在写代码的过程中new了很多对象,导致内存消耗很高(高的时候达到300、400M)。
我想问的是怎么样能降低它的内存消耗,另外,可不可以在MainView中通过添加一个注销事件,将消耗的内容全部释放掉(或降到最低)?
[解决办法]
这个我不知道你的一个网页中怎么能加载这么多东西。
下面是我的几点想法:
1. 把你的内容分开到很多页面,这样当不需要某些内容的时候,可以关掉。
2. 仅在需要的时候加载。
3. 不使用的话及时释放,这个比较笼统。
仅仅个人想法,供参考,我没遇到过你这么恐怖的情况。
[解决办法]
// 把你不需要的对象全部设置为空,不要有被引用,然后手动调用GC回收。
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
if (i >= count) break;
StringBuilder xaml = new StringBuilder();
xaml.Append("<TextBlock ");
xaml.Append("xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"");
//xaml.Append(" TextWrapping="Wrap" FontSize="14" Foreground="White" Width="235" ");
xaml.Append(" FontSize="12" Foreground="White" Width="235" ");
xaml.Append(" Text=" " + dataList[i].Name + "" Tag="" + dataList[i].ID + "" />");