搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
.NET内存管理宝典
0.00     定价 ¥ 139.00
浙江图书馆
  • ISBN:
    9787302571339
  • 作      者:
    [波兰],康拉德·科克萨(Konrad,Kokosa)
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2021-03-01
收藏
编辑推荐

为什么要阅读本书

正如本书第14章14.3节所提到的,如下类型的应用程序十分需要本书的知识。

·金融软件:特别是实时交易和所有需要基于大量各种数据以尽快得出答案的分析决策。

·大数据:虽然大数据通常都是批量、慢速处理,但如果处理每笔数据都慢一点点,累加起

来就会将总体处理时间拉长数小时或数天。此外,有些应用程序,比如搜索引擎,同样需要快速得到问题的答案。

·游戏:在一个以帧速率(FPS)决定游戏接受度和图像质量上限的世界中,每一毫秒都不能

浪费。

·机器学习:使用日益广泛的机器学习(ML)需要越来越强的计算能力去执行各种复杂算法。除了开发以上应用程序之外,正如本书第1章开头所说的,如果你想成为一名高级程序员,你不想止步于代码能够工作,还想有追求,关心工作的质量,关心它是如何工作的,那么你应该读这本书。


展开
作者简介

作 者 简 介

Konrad Kokosa是一位经验丰富的软件设计师和开发人员。他对Microsoft公司的技术特别感兴趣,同时对其他所有技术也充满好奇。Konrad从事编程工作已经有十多年,解决过.NET世界中的许多性能问题和架构难题,设计和提升过.NET应用程序的运行速度。他是一名独立顾问,是meetup和技术会议讲师,喜欢写Twitter。Konrad还分享了他作为.NET领域培训讲师的激情岁月,特别是在应用程序性能、编码优秀实践和诊断方面。他是华沙Web性能小组的创始人。他是Visual Studio和开发工具类别中的Microsoft MVP。他是Dotnetos.org的联合创始人。Dotnetos.org由三位.NET爱好者发起,主要组织.NET性能相关的会议。


译 者 简 介

  叶伟民

《.NET并发编程实战》的译者。曾在美国旧金山工作,具有16年的.NET开发经验,目前从业于金融科技行业。

 

  涂曙光

前微软技术专家,专注于.NET和JavaScript技术领域。目前在私募基金行业从事低延迟交易系统的开发。


展开
内容介绍

了解.NET内存管理的内部工作原理、陷阱和技术,以便有效地避免软件中出现各种性能和可伸缩性问题。尽管.NET具有自动内存管理功能,但了解 .NET的内存管理工作原理以及如何最好地编写与之高效交互的软件方面仍有许多益处。《.NET内存管理宝典 提高代码质量、性能和可扩展性》是你通过了解和处理 .NET 中的内存管理来编写出更好软件的全面指南。

  《.NET内存管理宝典 提高代码质量、性能和可扩展性》经过了 Microsoft 的 .NET 团队全面审查,包含 了25 个有价值的故障排除方案,旨在帮助诊断具有挑战性的内存问题。读者还将受益于多个 .NET 内存管理”规则”,这些规则介绍了编写内存感知代码的方法以及避免常见的破坏性陷阱的方法。

本书内容

● 了解自动内存管理的理论基础

● 深入研究.NET内存管理的各个方面,包括对垃圾回收(GC)实现的详细介绍,这些知识如果自行摸索需要多年经验才能获得

● 获得如何将这些知识应用于实际软件开发中的实用建议

●  使用与 .NET 内存管理相关工具的实用知识来诊断各种与内存相关的问题

● 探索高级内存管理的各个方面,包括使用Span和Memory类型


展开
目录

目  录


第1章  基本概念  1

1.1  内存相关术语  2

1.2  手动内存管理  15

1.3  自动内存管理  19

1.4  引用计数  23

1.5  跟踪回收器(Tracking Collector )  26

1.6  小历史  32

1.7  本章小结  34

规则1 – 自学  34

第2章  底层内存管理  37

2.1  硬件  37

2.2  操作系统  55

2.3  NUMA和CPU组  70

2.4  本章小结  71

规则2 – 避免随机访问,拥抱循序访问  71

规则3 – 提高空间和时间数据局部性  72

规则4 – 不要放弃使用更高级技巧的可能性  72

第3章  内存测量  73

3.1  尽早测量  74

3.2  Windows环境  81

3.3  Linux环境  123

3.4  本章小结  135

规则5 – 尽早测量GC  137

第4章  .NET基础知识  139

4.1  .NET版本  139

4.2  .NET内部原理  141

4.3  程序集和应用程序域  148

4.4  进程内存区域  150

4.5  类型系统  161

4.6  字符串  173

4.7  装箱与拆箱  185

4.8  按引用传递  188

4.9  类型数据局部性  190

4.10  静态数据  193

4.11  本章小结  197

规则6 – 测量你的程序  197

规则7 – 不要假设内存泄漏不存在  198

规则8 – 考虑使用结构  198

规则9 – 考虑使用字符串暂存  198

规则10 – 避免装箱  198

第5章  内存分区  201

5.1  分区策略  201

5.2  按大小分区  202

5.3  按生存期分区  207

5.4  按物理分区  224

5.5  本章小结  241

规则11 – 监视代大小  241

规则12 – 避免不必要的堆引用  241

规则13 – 监视段使用情况  242

第6章  内存分配  243

6.1  内存分配简介  243

6.2  bump pointer分配  244

6.3  空闲列表分配  250

6.4  创建新对象  253

6.5  堆再平衡  260

6.6  OutOfMemoryException异常  262

场景6-1:OutOfMemoryException异常  263

6.7  堆栈分配  265

6.8  避免分配  266

6.9  本章小结  300

规则14 – 在性能攸关的地方,

避免堆分配  300

规则15 – 避免过多的LOH分配  301

规则16 – 如果可行,在堆栈上分配  301

第7章  垃圾回收——简介  303

7.1  高层视图  303

7.2  GC过程的示例  304

7.3  GC过程的步骤  309

场景7-1:分析GC的使用情况  309

7.4  分析GC  313

7.5  垃圾回收性能调优数据  314

7.6  回收触发器  325

7.7  EE挂起  334

场景7-4:分析GC挂起时间  335

7.8  要判决的代  336

场景7-5:被判决的代的分析  338

7.9  本章小结  339

第8章  垃圾回收——标记阶段  341

8.1  对象的遍历与标记  341

8.2  局部变量根  342

8.3  终结根  357

8.4  GC内部根  357

8.5  GC句柄根  358

8.6  处理内存泄漏  363

第9章  垃圾回收——计划阶段  371

9.1  小对象堆  371

9.2  大对象堆  389

9.3  压缩的决策  390

9.4  本章小结  391

第10章  垃圾回收——清除和压缩  393

10.1  清除阶段  393

10.2  压缩阶段  394

10.3  本章小结  404

规则17 – 观察运行时挂起  405

规则18 – 避免“中年危机”  406

规则19 – 避免老的代和LOH碎片化  406

规则20 – 避免显式GC  407

规则21 – 避免内存泄漏  407

规则22 – 避免固定  407

第11章  GC风格  409

11.1  模式概述  409

11.2  模式配置  411

11.3  GC停顿和开销  413

11.4  模式描述  414

11.5  延迟模式  426

11.6  选择GC风格  431

11.7  本章小结  438

规则23 – 有意识地选择GC模式  439

规则24 – 记住延迟模式的相关知识  439

第12章  对象生存期  441

12.1  对象与资源的生命周期  441

12.2  终结  442

12.3  Disposable对象  463

12.4  安全句柄  468

12.5  弱引用  473

12.6  本章小结  486

规则25 – 避免终结器  486

规则26 – 首选显式清理  487

第13章  其他主题  489

13.1  依赖句柄  489

13.2  线程局部存储  494

13.3  托管指针  504

13.4  关于结构的更多知识  526

13.5  对象/结构布局  533

13.6  非托管约束  541

13.7  本章小结  546

第14章  高级技巧  547

14.1  Span<T>和Memory<T>  547

14.2  Unsafe  568

14.3  面向数据设计  573

14.4  未来特性  585

14.5  本章小结  595

第15章  编程API  597

15.1  GC API  597

15.2  CLR Hosting  609

15.3  ClrMD  616

15.4  TraceEvent库  621

15.5  自定义GC  623

15.6  本章小结  626


展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录