高性能健壮系统中的内存管理

高性能健壮系统中的内存管理

ID:1466806

大小:178.50 KB

页数:17页

时间:2017-11-11

高性能健壮系统中的内存管理_第1页
高性能健壮系统中的内存管理_第2页
高性能健壮系统中的内存管理_第3页
高性能健壮系统中的内存管理_第4页
高性能健壮系统中的内存管理_第5页
资源描述:

《高性能健壮系统中的内存管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、高性能健壮系统中的内存管理合理的内存管理策略带来系统性能的提高更高的运行速度更小的内存占用稳定的内存使用量让系统更健壮减少因系统设计规模的扩大而带来的负作用易于调试减少编码失误率控制bug的坏影响的范围让系统可以长期不间断的工作内存是最难管理的资源内存作为一种资源,在应用级和系统底层工作是两种不同的模式。应用级:我们看到的是连续的虚拟地址空间系统级:是分块的内存页内存缺乏原子性、不能用简单的引用记数方式管理。在传统软件中、内存碎片几乎一定会产生。从性能角度看,内存并非像程序员们想象的那样有一致性。性能敏感的软件或实时系统,内存管理有更苛刻的要求。性能无论语言

2、多高级,在你使用的语言层面总有事情可以做。编译器并非万能人有机会比优化器做的更好深入RAM硬件底层抽象与细节的矛盾抽象是为了设计更大的系统细节是为了更高性能的工作CRT→OS→虚拟内存地址→物理内存地址→BIOS→Cache→储存控制芯片→DRAMDRAM是晶体管和电容构成的二维电路Cache使用SRAM,可以工作在更高频率下控制芯片以串行模式工作RAM性能的提高并非无差别的结论?没有永远不变的原则大原则变化的慢没有一劳永逸的解决方案内存访问很廉价但有代价减少内存访问的次数是很有意义的随机访问内存慢于顺序访问内存请让数据物理上连续集中内存访问优于分散访问尽可

3、能的将数据紧密的存放在一起无关性内存访问优于相关性内存访问请考虑并行的可能性、即使你的程序本身没有使用并行机制控制周期性密集访问的数据大小必要时采用时间换空间的方法读内存快于写内存代码也会占用内存,所以、保持代码的简洁关于优化的参考X86平台,AgnerFog是绝对的权威。《如何优化Pentium微处理器》《代码优化:有效使用内存》《深入理解计算机系统》制定合理的内存管理策略了解你的系统如何使用内存系统中各种对象有怎样的生命期?峰值时系统需要多少内存?这个值因何而变?系统稳定工作的时候,需要多少内存?那些对象需要?哪些内存需求是稳定不变的,哪些是动态增减的?

4、手工管理内存和自动管理内存(gc)都不是万能的。适当的时候引入gc或近似的机制不变的内存需求各施其责、让操作系统帮助你更好的解决问题只申请不(主动)释放并非坏习惯内存块不是原子对象,即使你还给了系统,系统也未必可以利用它们Bug经常出在程序退出时,可用户在意它们吗?你真的需要在意吗?C++带来的错觉:令人困扰的单件生命期问题。模块化设计的问题动态链接库和独立进程服务生命期可预期的内存需求内存块的生命期决定于一个特定对象或一个特定事件Webserver中、大部分对象跟连接相关Gameserver中、大部分对象跟独立玩家相关3dengine中、大部分对象跟3d实

5、体相关……偶尔、复制好过引用成批的分层次回收内存有利于减少内存碎片把相关的数据结构尽可能的物理上保持连续不同层次的对象引用的内存在设计上分离可再生的内存数据3dengine中的资源管理一切内部资源加载后不再删除其资源handle任何资源皆可再生(往往指从外存重新加载)资源占用的内存的回收和再利用和逻辑层无关资源的预读及并行化处理流程于主逻辑正交设计显存对象是不同类型的内存数据、应独立管理临时内存程序运行栈用堆模拟一个栈关于C++的auto_ptr关于C++的容器:vectorlistmap……异常的处理:C++异常longjmpString的管理String

6、类有多重要?std::string?CString?boost::rope?CopyonWrite是天使还是恶魔?为什么不用constchar*?通常,我们只需要rawpointerconstchar*往往只是一个handle,一个可以比较和排序的handle忘了宽字节吧,UTF-8可以解决大部分问题没有完美的string类,如果你认为你设计出了一个,那么你一定忘掉了要用它做什么。垃圾收集(GC)C/C++需要GC吗?自动化内存管理无处不在。手工写出了每一个new/deletemalloc/free并不意味着你在手工管理引用计数同样是一种自动化管理GUI、3

7、d场景管理不可能离开自动化内存管理Mark-sweepGC的优势使用gc并不意味着偷懒,通常是因为良好的设计的需要gc不等于低效、间隙停顿、高内存占用请控制gc的粒度http://code.google.com/p/manualgc/自定义内存管理器更好的控制内存碎片更好的监控内存使用监视悬空指针和内存访问越界易于调试寻找内存泄露Q&A谢谢http://blog.codingnow.com

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。