.NET内存管理宝典
了解.NET内存管理的内部工作原理、陷阱和技术,是你通过了解和处理 .NET 中的内存管理来编写出更好软件的全面指南。

作者:[波兰] 康拉德·科克萨(Konrad Kokosa)著 叶伟民 涂曙光译

定价:139元

印次:1-1

ISBN:9787302571339

出版日期:2021.03.01

印刷日期:2021.03.03

图书责编:王军

图书分类:零售

电子书
在线购买
分享
内容简介
作者简介
前言序言
资源下载
查看详情 查看详情 查看详情

了解.NET内存管理的内部工作原理、陷阱和技术,以便有效地避免软件中出现各种性能和可伸缩性问题。尽管.NET具有自动内存管理功能,但了解 .NET的内存管理工作原理以及如何最好地编写与之高效交互的软件方面仍有许多益处。《.NET内存管理宝典 提高代码质量、性能和可扩展性》是你通过了解和处理 .NET 中的内存管理来编写出更好软件的全面指南。   《.NET内存管理宝典 提高代码质量、性能和可扩展性》经过了 Microsoft 的 .NET 团队全面审查,包含 了25 个有价值的故障排除方案,旨在帮助诊断具有挑战性的内存问题。读者还将受益于多个 .NET 内存管理”规则”,这些规则介绍了编写内存感知代码的方法以及避免常见的破坏性陷阱的方法。 本书内容 ● 了解自动内存管理的理论基础 ● 深入研究.NET内存管理的各个方面,包括对垃圾回收(GC)实现的详细介绍,这些知识如果自行摸索需要多年经验才能获得 ● 获得如何将这些知识应用于实际软件开发中的实用建议 ● 使用与 .NET 内存管理相关工具的实用知识来诊断各种与内存相关的问题 ● 探索高级内存管理的各个方面,包括使用Span和Memory类型

作 者 简 介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技术领域。目前在私募基金行业从事低延迟交易系统的开发。

前 言 在计算机科学的历史中,内存一直存在——从穿孔卡片到磁带,再到如今复杂的DRAM芯片。它也将会永远存在,可能会以科幻全息芯片的形式出现,或者甚至是我们现在无法想象的更神奇的事物。当然,内存的存在并非没有原因。众所周知,计算机程序被认为是结合在一起的算法和数据结构。我非常喜欢这句话。大概多数人都听说过Niklaus Wirth撰写的Algorithms+Data Structures=Programs一书,正是在这本书中创造了这个伟大的句子。 在软件工程领域的最早时期,内存管理就以其重要性而闻名。从第一台计算机开始,工程师就必须考虑算法(程序代码)和数据结构(程序数据)的存储。如何加载和存储以及在何处加载和存储这些数据以供以后使用一直都很重要。 在这方面,软件工程和内存管理总是天生相关的,就像软件工程和算法一样。我相信它将永远都是这样。内存是一种有限的资源,而且将永远都是。因此,在某些时候或某种程度上,内存将永远留在未来的开发人员的脑海中。如果一种资源是有限的,那么总会有某种错误或滥用导致该资源的匮乏。内存也不例外。 话虽如此,关于内存管理,有一件事是肯定不断变化的——就是内存的大小。最早期的开发人员都清楚地知道他们程序里内存的每一位(bit),那时他们只有几千字节(KB)的内存。每十年这个数字都在增长,今天,内存的单位为吉字节(GB),而太字节(TB)和拍字节(PB)则在敲门。随着内存大小的增加,访问数据的时间将会减少,从而有可能在令人满意的时间内处理完所有这些数据。但是,即使我们可以说内存处理是很快的,使用简单的内存管理算法来尝试处理所有GB量...

暂无课件

暂无样章

暂无网络资源

扫描二维码
下载APP了解更多

目录
荐语
查看详情 查看详情
目  录

第1章  基本概念  1

1.1  内存相关术语  2

1.1.1  静态分配  6

1.1.2  寄存器机  6

1.1.3  堆栈(Stack)  7

1.1.4  堆栈机  11

1.1.5  指针  12

1.1.6  堆(Heap)  14

1.2  手动内存管理  15

1.3  自动内存管理  19

1.4  引用计数  23

1.5  跟踪回收器(Tracking Collector )  26

1.5.1  标记阶段  27

1.5.2  回收阶段  30

1.6  小历史  32

1.7  本章小结  34

规则1 – 自学  34

第2章  底层内存管理  37

2.1  硬件  37

2.1.1  内存  42

2.1.2  CPU  43

2.2  操作系统  55

2.2.1  虚拟内存  55

2.2.2  large page  59

2.2.3  虚拟内存碎片  59

2.2.4  通用内存布局  59

2.2.5  Windows内存管理  60

2.2.6  Windows内存布局  65

2.2.7  Linux内存管理  67

2.2.8  Linux内存布局  68

2.2.9  操作系统的影响  69

2.3  NUMA和CPU组  70

2.4  本章小结  71

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

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

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

第3章  内存测量  73

3.1...

为什么要阅读本书
正如本书第14章14.3节所提到的,如下类型的应用程序十分需要本书的知识。
·金融软件:特别是实时交易和所有需要基于大量各种数据以尽快得出答案的分析决策。
·大数据:虽然大数据通常都是批量、慢速处理,但如果处理每笔数据都慢一点点,累加起
来就会将总体处理时间拉长数小时或数天。此外,有些应用程序,比如搜索引擎,同样需要快速得到问题的答案。
·游戏:在一个以帧速率(FPS)决定游戏接受度和图像质量上限的世界中,每一毫秒都不能
浪费。
·机器学习:使用日益广泛的机器学习(ML)需要越来越强的计算能力去执行各种复杂算法。除了开发以上应用程序之外,正如本书第1章开头所说的,如果你想成为一名高级程序员,你不想止步于代码能够工作,还想有追求,关心工作的质量,关心它是如何工作的,那么你应该读这本书。