Pro .NET Memory Management : For Better Code, Performance, and Scalability /
Understand .NET memory management internal workings, pitfalls, and techniques in order to effectively avoid a wide range of performance and scalability problems in your software. Despite automatic memory management in .NET, there are many advantages to be found in understanding how .NET memory works...
Clasificación: | Libro Electrónico |
---|---|
Autor principal: | |
Formato: | Electrónico eBook |
Idioma: | Inglés |
Publicado: |
New York :
Apress,
[2018]
|
Temas: | |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
Tabla de Contenidos:
- Intro; Table of Contents; About the Author; About the Technical Reviewers; Acknowledgments; Foreword; Introduction; Chapter 1: Basic Concepts; Memory-Related Terms; The Static Allocation; The Register Machine; The Stack; The Stack Machine; The Pointer; The Heap; Manual Memory Management; Automatic Memory Management; Allocator, Mutator, and Collector; The Mutator; The Allocator; The Collector; Reference Counting; Tracking Collector; Mark Phase; Conservative Garbage Collector; Precise Garbage Collector; Collect Phase; Sweep; Compact; Small History; Summary; Rule 1
- Educate Yourself.
- Chapter 2: Low-Level Memory ManagementHardware; Memory; CPU; CPU Cache; Cache Hit and Miss; Data Locality; Cache Implementation; Data Alignment; Non-temporal Access; Prefetching; Hierarchical Cache; Multicore Hierarchical Cache; Operating System; Virtual Memory; Large Pages; Virtual Memory Fragmentation; General Memory Layout; Windows Memory Management; Windows Memory Layout; Linux Memory Management; Linux Memory Layout; Operating System Influence; NUMA and CPU Groups; Summary; Rule 2
- Random Access Should Be Avoided, Sequential Access Should Be Encouraged.
- Rule 3
- Improve Spatial and Temporal Data LocalityRule 4
- Consume More Advanced Possibilities; Chapter 3: Memory Measurements; Measure Early; Overhead and Invasiveness; Sampling vs. Tracing; Call Tree; Objects Graphs; Statistics; Latency vs. Throughput; Memory Dumps, Tracing, Live Debugging; Windows Environment; Overview; VMMap; Performance Counters; Event Tracing for Windows; Windows Performance Toolkit; Windows Performance Recorder; Windows Performance Analyzer; Opening File and Configur ation; Generic Events; Region of Interests; Flame Charts; Stack Tags; Custom Graphs; Profiles.
- PerfViewData Collection; Data Analysis; Memory Snapshots; ProcDump, DebugDiag; WinDbg; Disassemblers and Decompilers; BenchmarkDotNet; Commercial Tools; Visual Studio; Scitech .NET Memory Profiler; JetBrains DotMemory; RedGate ANTS Memory Profiler; Intel VTune Amplifier and AMD CodeAnalyst Performance Analyzer; Dynatrace and AppDynamics; Linux Environment; Overview; Perfcollect; Trace Compass; Opening File; CoreCLR. GC.collections; CoreCLR.threads.state; CoreCLR. GC.generations.ranges; The Final Results; Memory Dumps; Summary; Rule 5
- Measure GC Early; Chapter 4: .NET Fundamentals.
- .NET Versions.NET Internals; Sample Program in Depth; Assemblies and Application Domains; Collectible Assemblies; Process Memory Regions; Scenario 4-1. How Big Is My Program in Memory?; Scenario 4-2. My Program's Memory Usage Keeps Growing; Scenario 4-3. My Program's Memory Usage Keeps Growing; Scenario 4-4. My Program's Memory Usage Keeps Growing; Type System; Type Categories; Type Storage; Value Types; Value Types Storage; Structs; Structs in General; Structs Storage; Reference Types; Classes; Strings; String Interning; Scenario 4-5. My Program's Memory Usage Is Too Big; Boxing and Unboxing.