如何理解并优化.NET应用程序对内存的使用
【十五分钟Talkshow】如何理解并优化.NET应用程序对内存的使用
前言:十五分钟Talkshow,是我将利用业余时间开展的一个活动(不定期发布),主要是我选择某些与技术或者软件工程方面有关的主题进行讲解,每次一个主题,尽可能在15分钟左右讲完。这些演讲是免费公开的,允许分发。
备注:这次是第一次录制,本来计划是十五分钟左右,没有把握好时间,后期还会在内容编排上面再做一些改进
摘要提示:这是一个关于.NET应用程序中对于内存使用和优化的简短演讲,通过此视频,你可以了解
}什么是内存问题 }.NET应用程序是如何分配和释放内存 }深入分析内存使用情况并调优 讲义地址:http://www.xizhang.com/fmplan/resources/01/如何理解并优化.NET应用程序对内存的使用.pdf
视频地址:http://www.tudou.com/programs/view/BhY8Q2icnAY/
范例代码:(代码可以稍作修改,请自行准备有关的Excel文件,和数据库)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClosedXML.Excel; using System.IO; using System.Diagnostics; namespace Console { class Program { static void Main( string [] args) { UploadData(); GC.Collect(); System.Console.Read(); } private static void UploadData() { ///该软件的功能在于,读取某个文件夹里面一批EXCEL文件里面的数据,并将其插入到数据库中去 ///测试用的EXCEL文件有470个,每个文件将要读取200个左右的单元格数据,根据名称读取 var folder = "d:\\temp\\demo" ; var files = Directory.GetFiles(folder, "*.xlsx" ); //数据库连接 var db = new DataModelDataContext(); //准备一个计时器 var sw = new Stopwatch(); sw.Start(); System.Console.WriteLine( "开始工作:" + DateTime.Now.ToString()); files.ForEach(file => { var bk = new XLWorkbook(file); var names = bk.NamedRanges; var fileName = Path.GetFileNameWithoutExtension(file); var code = fileName.Substring(0, 6); var year = short .Parse(fileName.Substring(7, 4)); var month = byte .Parse(fileName.Substring(11, 2)); names.ForEach(item => { var name = item.Name; var address = item.RefersTo; var sheet = address.Split( '!' )[0].Replace( "'" , "" ); var cell = address.Split( '!' )[1]; var rng = bk.Worksheet(sheet).Range(cell).Cells().FirstOrDefault(); var v = ! string .IsNullOrEmpty(rng.FormulaA1) ? rng.ValueCached : rng.Value.ToString(); //如果是公式的话,则用ValueCached读取(有可能是空值,即表示当前没有值,有可能是错误,这种情况应该都是以#开头,#DIV/0!,#N/A,#NAME?,#NUM!,#VALUE,#REF!,#NULL! db.ItemValues.InsertOnSubmit( new ItemValue() { Code = code, Year = year, Month = month, ItemName = name, Value = v }); }); db.SubmitChanges(); bk.Dispose(); GC.Collect(); System.Console.WriteLine(file); }); sw.Stop(); System.Console.WriteLine( "结束工作:{0},耗时:{1}秒" , DateTime.Now, sw.Elapsed.TotalSeconds); } } }
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于如何理解并优化.NET应用程序对内存的使用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did49802