当前位置 : 主页 > 网络编程 > 其它编程 >

(WeakReference)弱引用解决OutOfMemoryException异常

来源:互联网 收集:自由互联 发布时间:2023-07-02
使用WeakReference来释放那些长时间在内存中无用的大对象测试代码:ViewCodeusingSystem;usingSystem.Collections.Generic 使用WeakReference 来释放那些长时间在内存中无用的大对象 测试代码:   View Code u
使用WeakReference来释放那些长时间在内存中无用的大对象测试代码:ViewCodeusingSystem;usingSystem.Collections.Generic

使用WeakReference 来释放那些长时间在内存中无用的大对象

测试代码:

 

View Code

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Runtime.Serialization.Formatters.Binary;namespace WeakReferenceTestSample{public class SomeBigClass : List{public SomeBigClass(){//this.LoadBigObject();this.LoadWeakReferenceBigObject();}private void LoadBigObject(){var smallBlockSize 90000;var largeBlockSize 1 <<24;var count 0;var bigBlock new byte[0];//for (int i 0; i <100000; i)// this.Add(string.Format("String No. {0}", i));try{var smallBlocks new List();while (true){GC.Collect();bigBlock new byte[largeBlockSize];largeBlockSize;smallBlocks.Add(new byte[smallBlockSize]);count;Console.WriteLine("{0} {1}", count.ToString(), ObjectSize(smallBlocks).ToString());}}catch (OutOfMemoryException){bigBlock null;GC.Collect();Console.WriteLine("{0} Mb allocated",(count*smallBlockSize)/(1024*1024));}}private void LoadWeakReferenceBigObject(){var smallBlockSize 90000;var largeBlockSize 1 <<24;var count 0;//var bigBlock new byte[0];var bigBlock new WeakReference(new byte[0]);try{//var smallBlocks new List();var smallBlocks new List();while (true){GC.Collect();bigBlock new WeakReference(new byte[largeBlockSize]);largeBlockSize;smallBlocks.Add(new WeakReference(new byte[smallBlockSize]));count;Console.WriteLine("{0} {1}", count.ToString(), ObjectSize(smallBlocks).ToString());}}catch (OutOfMemoryException){bigBlock null;GC.Collect();Console.WriteLine("{0} Mb allocated",(count * smallBlockSize) / (1024 * 1024));}}private long ObjectSize(object o){long size 0;//object o new object();using (Stream s new MemoryStream()){BinaryFormatter formatter new BinaryFormatter();formatter.Serialize(s, o);size s.Length;}return size;}}}

 

上一篇:八面来风,驭势科技再添殊荣
下一篇:没有了
网友评论