.NET内存管理的最佳实践

问题描述

我们在实际编程中使用的内存往往都会超出程序需要的内存,对于桌面应用程序内存是相对廉价的,但如果你在开发ASP.NET应用程序,需要处理服务器上大量的内存时,过度使用内存可能会带来很多痛苦,因此有必要讨论一下.NET内存管理的最佳实践,以减少内存浪费。 程序员在为类中的成员变量获取内存时往往有些多余的行为,因为有些不必要的内存使用会浪费掉一些内存空间,我们来看一段代码: publicclassBadUse { privateSqlConnectioncon=newSqlConnection(); privateDataSetds=newDataSet("MyData"); publicBadUse(){} publicBadUse(stringconnectionString) { SqlConnection=newSqlConnection(connectionString); } publicBadUse(SqlConnectioncon) { this.con=con; } } 如果在我们的系统中使用了多余的内存,类在被调用之前,甚至是构造函数被调用之前,就调用了对象成员初始化程序,它将为所有成员变量获取内存,在上面的代码中,在初始化期间我们创建了一个SqlConnection对象,在那之后,我们都调用默认的构造函数或创建对象的构造函数,因此没有使用已经创建好的对象,重新创建了一遍对象,因此浪费了内存空间。 .NET内存管理最佳实践方法:publicclassGoodUse { privateSqlConnectioncon=null; privateDataSetds=null; publicSqlConnectionConnection//BettertouseProperties { get { if(this.con==null)//Alwayscheckwhetherthereisanexistingobjectassignedtomember this.con=newSqlConnection(); returnthis.con; } set { if(value==null||this.con!=null) { this.con.dispose();//ClearsoutExistingobjectifmemberisassignedtoNull this.con=null;//Alwaysbettertoassignnulltomembervariables } if(value!=null)this.con=value; } } publicGoodUse(){} publicGoodUse(stringconnectionString) { this.Connection=newSqlConnection(connectionString);//Assignesnewobjecttonullmember } publicGoodUse(SqlConnectioncon) { this.con=con; } }.net技术群:163529971

解决方案

解决方案二:

解决方案三:
这对于一个程序本身呢提高不了万分之一的性能,节省不了万分之一的空间,看不出一分钱好处。基本上都是理论概念的议论。如果你写个实际测试来证明对整个应用程序(而不是死抠这一两条语句)的性能提高,那么才有说服力。如果写不出来,除了实在是不会写以外,很可能更主要的原因就是你自己都觉得测试结论不会太有说服力。
解决方案四:
实践往往比理论强。有很多理论,特别是简单的推理,看上去永远都是“对的”。但是不一定有多高的优先级只能用来搞争议。如果能够在10层楼高的地方放心大胆地训练走钢丝的技巧,就不要只在离地1米的地方去训练。所以我们放弃一些简单的议论,可以更简单地去集编程设计中的真正难点的地方。
解决方案五:
写出这样的代码。估计没毕业吧。
解决方案六:
4楼我不觉得这是没毕业的人写的代码
解决方案七:
想法很好,性能有没有提高、可用性还得实践,不过可以一试,我觉得就算对程序性能有十万分之一的提高,也不能小阙它的功能,小的性能都不能注意,从何提大性能?欣赏LZ的想法!
解决方案八:
就像现在手机开发

时间: 2024-11-05 21:44:46

.NET内存管理的最佳实践的相关文章

Java日志管理的最佳实践

概述 对于现在的应用程序来说,日志的重要性是不言而喻的.很难想象没有任何日志记录功能的应用程序运行在生产环境中.日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息.状态信息.调试信息和执行时间信息等.在生产环境中,日志是查找问题来源的重要依据.应用程序运行时的产生的各种信息,都应该通过日志 API 来进行记录.很多开发人员习惯于使用 System.out.println.System.err.println 以及异常对象的 printStrackTrace 方法来输出相关信息.这些

管理远程数据中心资源的五个最佳实践

如今的现代IT基础设施已从一种本地化环境演变成一种分布式数据中心架构.管理员能够利用更好的远程托管服务,帮助自己扩大现有环境,并完成更多与业务有关的IT任务.企业组织在利用云技术和专用的广域网链路,帮助自己扩大现有数据中心,并使用外部资源,用于灾难恢复.扩建.额外的用户工作负载,或者甚至测试和开发. 这些资源可供使用时,人们往往会用完资源.如果环境是本地环境,管理和监控数据中心里面的现有资源可能更容易. 然而,如果有分支机构或其他远程环境也需要监控,该如何是好?要牢记的一个要点是,资源始终是有限

《DevOps实战:VMware管理员运维方法、工具及最佳实践》——3.4 管理源代码

3.4 管理源代码 源代码管理(SCM,Source Code Management)是DevOps环境中必不可少的元素.想象一下:如果你要把基础设施转换为代码,重要的是有一种回顾任何更改.在新更改引入问题(例如,在最好的情况下是定期出现不稳定的情况,在最糟糕的情况下引起停机)时回到文件不同版本的手段.有些人可能认为"容易"的方法是建立文件的多个拷贝,每个都使用唯一的名称(Vagrantf?ile1.Vagrantf?ile2.Vagrantf?ile01012015等),但是接着当你

如何运用Hyper-V最佳实践分析器进行管理

Hyper-V Manager和系统中心虚拟机管理器一直都是用于管理虚拟机的工具.不过不管哪个工具都不能直接表明你的Hyper-V配置是否遵从了微软推荐的最佳实践.所以想要了解这一信息,必须使用更好的环境管理工具--Hyper-V最佳实践分析器. Hyper-V最佳实践分析器:通过Windows Server 2012服务器管理器访问 选择Hyper-V服务器或者你想扫描的其他服务器,然后单击开始扫描按钮.扫描过程通常会很快也很简单,但是我建议避免对负载很高的Hyper-V服务器进行最佳实践扫描

nsmutablearray-多数组的最佳内存管理

问题描述 多数组的最佳内存管理 请问有人能解答一下: 到底是有上百万个对象的NSMutableArray需要的存储空间多,还是上百万个NSMutableArray ,带有一个对象需要的存储空间多? 它们有什么区别么?

云端数据可视化管理的五项最佳实践

迁移到云端可以帮助企业加快IT交付.提高业务敏捷性,但是可能也会带来敞开的安全漏洞,让公司暴露在网络攻击面前.这意味着在云端运作的企业组织现在必须解答这些问题:"什么云服务器遭到了攻击,我如何才能知道?" 遗憾的是,答案并不容易获得.像防火墙和入侵检测系统这些传统的安全工具在企业组织内部使用时效果很好,可是面对云环境时,它们没有多大帮助.虚拟基础设施具有的弹性和动态性使得安全团队很难看到云端发生的情况.而要是没有这种可见性,它们不可能执行一致的政策.发现漏洞,并迅速应对异常行为. 想得

《配置管理最佳实践》——1.3 源代码管理核心概念

1.3 源代码管理核心概念 就像其他学科一样,源代码管理也有它自己的术语.可能你以前从其他一些配置管理人员那里听到一些技术行话却百思不得其解,读过这一章你就不会再对这些术语感到陌生了.这一章将会帮助你理解这些核心概念.理解了这些概念对理解源代码管理最佳实践也是非常有帮助的. 1.3.1 建立基线和时间机器许多开发者认为源代码管理就是简单地从源代码管理工具中(一个代码库)签入和签出代码.就像大多数人认为的那样,多年前一些比较老的版本管理系统的确是这个样子.如今,虽然大多数配置管理代码库具备的可靠性

《配置管理最佳实践》——1.5 管理全球分布式开发团队

1.5 管理全球分布式开发团队 源代码管理可以帮助协调分布式开发团队之间的工作.如图1.7所示,在伦敦.纽约和孟买有三个开发团队,源代码最佳实践可以有条理有逻辑地帮助协调每个人的工作. 在地理分布式的工作环境中,全球性软件开发的挑战是能够协调好工作和使变更受控.对于同一房间里坐在对面的两个人,协调好工作和使变更受控都不是件很容易的事情,而对于那些身处不同国家,工作在不同时区,有着不同语言.文化.追求的团队来说,这就更难了. 源代码管理可以在各自的分支上帮助组织这些工作,使其可以在一个地方被完成,

《配置管理最佳实践》——第1章 源代码管理 1.1为什么源代码管理如此重要

第I部分 配置管理核心实践 第1章 源代码管理 源代码管理是保护组装成系统的所有工件(artifact)的学科.源代码管理是配置管理的核心职能(function),直接影响着团队的生产力和产品质量.不幸的是,很多公司并没有意识到建立高效源代码管理机制的重要性,缺乏实施源代码管理的能力,缺少源代码管理工具和流程.这一章将讨论如何正确地进行源代码管理.我曾经负责过多家分布全球的大公司的源代码管理工作.源代码管理必须确保产品发布的源代码永远都不能丢失.源代码需要通过一种灵活和创新的方式进行管理.每个公