<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET Memory Management Archives - Halil Durmus</title>
	<atom:link href="https://www.halildurmus.com/tag/net-memory-management/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.halildurmus.com/tag/net-memory-management/</link>
	<description>Official Website</description>
	<lastBuildDate>Mon, 16 Feb 2026 15:46:40 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.halildurmus.com/wp-content/uploads/2020/06/1-HalilDurmusRetina-150x150.png</url>
	<title>.NET Memory Management Archives - Halil Durmus</title>
	<link>https://www.halildurmus.com/tag/net-memory-management/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>C#’ta Memory Management, GC Nasıl Çalışır?</title>
		<link>https://www.halildurmus.com/2026/02/17/cta-memory-management-gc-nasil-calisir/</link>
					<comments>https://www.halildurmus.com/2026/02/17/cta-memory-management-gc-nasil-calisir/#respond</comments>
		
		<dc:creator><![CDATA[Halil Durmuş]]></dc:creator>
		<pubDate>Tue, 17 Feb 2026 05:00:00 +0000</pubDate>
				<category><![CDATA[Bilgisayar]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[.NET Memory Management]]></category>
		<category><![CDATA[C# Performance Optimization]]></category>
		<category><![CDATA[Garbage Collector (GC)]]></category>
		<category><![CDATA[High Performance .NET]]></category>
		<guid isPermaLink="false">https://www.halildurmus.com/?p=5211</guid>

					<description><![CDATA[<p>Kurumsal ve uzun süre çalışan (.NET Web API, Worker Service, CRM entegrasyonları gibi) uygulamalarda memory management, performans ve stabilite açısından kritik bir konudur. Bu yazıda .NET Garbage Collector (GC) mimarisini, nesil (Generation) mantığını, Large Object Heap’i, IDisposable desenini ve modern bellek dostu yapılar olan Span&#60;T> / Memory&#60;T> kullanımını okuyup analiz edilebilir bir seviyede ele alacağız. [&#8230;]</p>
<p>The post <a href="https://www.halildurmus.com/2026/02/17/cta-memory-management-gc-nasil-calisir/">C#’ta Memory Management, GC Nasıl Çalışır?</a> appeared first on <a href="https://www.halildurmus.com">Halil Durmus</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Kurumsal ve uzun süre çalışan (.NET Web API, Worker Service, CRM entegrasyonları gibi) uygulamalarda <strong>memory management</strong>, performans ve stabilite açısından kritik bir konudur. Bu yazıda .NET Garbage Collector (GC) mimarisini, nesil (Generation) mantığını, Large Object Heap’i, <code>IDisposable</code> desenini ve modern bellek dostu yapılar olan <code>Span&lt;T></code> / <code>Memory&lt;T></code> kullanımını <strong>okuyup analiz edilebilir</strong> bir seviyede ele alacağız.</p>



<h4 class="wp-block-heading"><strong>1. Garbage Collector (GC) Nedir, Ne Yapar?</strong></h4>



<p>.NET’te bellek yönetimi büyük ölçüde <strong>Garbage Collector</strong> tarafından otomatik olarak yapılır.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector-1024x683.png" alt="" class="wp-image-5217" srcset="https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector-1024x683.png 1024w, https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector-300x200.png 300w, https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector-768x512.png 768w, https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector-810x540.png 810w, https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector-1140x760.png 1140w, https://www.halildurmus.com/wp-content/uploads/2025/12/Garbage_Collector.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>GC’nin temel görevleri:</p>



<ul class="wp-block-list">
<li>Heap üzerinde tahsis edilen nesneleri takip etmek</li>



<li>Artık erişilmeyen (unreachable) nesneleri temizlemek</li>



<li>Belleği <strong>compact</strong> ederek fragmentation’ı azaltmak</li>
</ul>



<p>⚠️ Önemli: GC bir <em>memory leak önleyici</em> değildir. Yanlış referans yönetimi hâlâ bellek sızıntısına yol açabilir.</p>



<h4 class="wp-block-heading"><strong>2. Generation (Gen 0 – Gen 1 – Gen 2) Mantığı</strong></h4>



<p>GC, performans için nesneleri <strong>yaşam sürelerine göre</strong> sınıflandırır.</p>



<h5 class="wp-block-heading">🔹 Gen 0</h5>



<ul class="wp-block-list">
<li>Yeni oluşturulan nesneler</li>



<li>Çok kısa ömürlüdür</li>



<li>En sık temizlenen nesildir</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>var user = new User(); // Gen 0</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">var</span><span style="color: #F6F6F4"> user </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">new</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">User</span><span style="color: #F6F6F4">(); </span><span style="color: #7B7F8B">// Gen 0</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<h5 class="wp-block-heading">🔹 Gen 1</h5>



<ul class="wp-block-list">
<li>Gen 0’dan sağ çıkan nesneler</li>



<li>Ara geçiş nesilleri</li>
</ul>



<h5 class="wp-block-heading">🔹 Gen 2</h5>



<ul class="wp-block-list">
<li>Uzun ömürlü nesneler (cache, singleton, static referanslar)</li>



<li>Temizlemesi pahalıdır</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>static readonly List&lt;string> _cache = new(); // Gen 2 adayı</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">static</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">readonly</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">List</span><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">string</span><span style="color: #F6F6F4">&gt; _cache </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">new</span><span style="color: #F6F6F4">(); </span><span style="color: #7B7F8B">// Gen 2 adayı</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<p>📌 <strong>GC Kuralı:</strong></p>



<p>Çoğu nesne genç ölür → Bu yüzden Gen 0 sık, Gen 2 nadir toplanır.</p>



<h4 class="wp-block-heading"><strong>3. Large Object Heap (LOH)</strong></h4>



<h5 class="wp-block-heading">LOH Nedir?</h5>



<ul class="wp-block-list">
<li><strong>85.000 byte</strong> üzerindeki nesneler LOH’a gider</li>



<li>Gen 2 ile birlikte toplanır</li>



<li>Varsayılan olarak <strong>compact edilmez</strong> (fragmentation riski)</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>byte[] buffer = new byte&#91;100_000&#93;; // LOH</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">[] buffer </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">new</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">&#91;</span><span style="color: #BF9EEE">100_000</span><span style="color: #F6F6F4">&#93;; </span><span style="color: #7B7F8B">// LOH</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<h5 class="wp-block-heading">LOH Problemleri</h5>



<ul class="wp-block-list">
<li>Fragmentation</li>



<li>Uzun GC pause süreleri</li>
</ul>



<h4 class="wp-block-heading"><strong>4. IDisposable ve Finalizer Mantığı</strong></h4>



<h5 class="wp-block-heading">IDisposable Ne Zaman Gerekli?</h5>



<p>Managed olmayan kaynaklar varsa:</p>



<ul class="wp-block-list">
<li>File handle</li>



<li>DB connection</li>



<li>Stream</li>



<li>Socket</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>public class FileLogger : IDisposable
{
private StreamWriter _writer;


public FileLogger(string path)
{
_writer = new StreamWriter(path);
}


public void Dispose()
{
_writer.Dispose();
}
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">public</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">class</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">FileLogger</span><span style="color: #F6F6F4"> : </span><span style="color: #97E1F1; font-style: italic">IDisposable</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">StreamWriter</span><span style="color: #F6F6F4"> _writer;</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">public</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">FileLogger</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">string</span><span style="color: #F6F6F4"> </span><span style="color: #FFB86C; font-style: italic">path</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">_writer </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">new</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">StreamWriter</span><span style="color: #F6F6F4">(path);</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">public</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Dispose</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">_writer.</span><span style="color: #62E884">Dispose</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<p><strong>using Statement</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>using (var logger = new FileLogger("log.txt"))
{
logger.Log("Hello");
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">using</span><span style="color: #F6F6F4"> (</span><span style="color: #F286C4">var</span><span style="color: #F6F6F4"> logger </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">new</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">FileLogger</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">log.txt</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">))</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">logger.</span><span style="color: #62E884">Log</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Hello</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<h4 class="wp-block-heading"><strong>5. Finalizer ve GC.SuppressFinalize</strong></h4>



<p>Finalizer (~ClassName)</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>~FileLogger()
{
Dispose(false);
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">~</span><span style="color: #62E884">FileLogger</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #62E884">Dispose</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">false</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<h5 class="wp-block-heading">Doğru Disposable Pattern</h5>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>public class ResourceHolder : IDisposable
{
  private bool _disposed;
  
  public void Dispose()
  {
    Dispose(true);
    GC.SuppressFinalize(this);
  }


  protected virtual void Dispose(bool disposing)
  {
    if (_disposed) return;
    if (disposing)
    {
      // managed resources
    }


    // unmanaged resources
    _disposed = true;
  }
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">public</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">class</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">ResourceHolder</span><span style="color: #F6F6F4"> : </span><span style="color: #97E1F1; font-style: italic">IDisposable</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">bool</span><span style="color: #F6F6F4"> _disposed;</span></span>
<span class="line"><span style="color: #F6F6F4">  </span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">public</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Dispose</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">  {</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #62E884">Dispose</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">true</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">    GC.</span><span style="color: #62E884">SuppressFinalize</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE; font-style: italic">this</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">  }</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">protected</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">virtual</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Dispose</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">bool</span><span style="color: #F6F6F4"> </span><span style="color: #FFB86C; font-style: italic">disposing</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  {</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> (_disposed) </span><span style="color: #F286C4">return</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> (disposing)</span></span>
<span class="line"><span style="color: #F6F6F4">    {</span></span>
<span class="line"><span style="color: #7B7F8B">      // managed resources</span></span>
<span class="line"><span style="color: #F6F6F4">    }</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B">    // unmanaged resources</span></span>
<span class="line"><span style="color: #F6F6F4">    _disposed </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">true</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #F6F6F4">  }</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<p>📌 <code>GC.SuppressFinalize</code> çağrılmazsa nesne <strong>iki kez</strong> GC sürecine girer.</p>



<h4 class="wp-block-heading"><strong>6. Span ve Memory / Modern Bellek Dostu Yapılar</strong></h4>



<h5 class="wp-block-heading">Neden Gerekli?</h5>



<ul class="wp-block-list">
<li>Allocation azaltmak</li>



<li>High-performance senaryolar</li>



<li>Copy yerine slice mantığı</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading">Span</h5>



<ul class="wp-block-list">
<li>Stack üzerinde çalışır</li>



<li>Heap allocation yapmaz</li>



<li>Async/await ile kullanılamaz</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Span&lt;int> numbers = stackalloc int&#91;5&#93;;
numbers&#91;0&#93; = 10;
void Process(Span&lt;byte> buffer)
{
  // slicing
  var header = buffer&#91;..4&#93;;
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #97E1F1; font-style: italic">Span</span><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">int</span><span style="color: #F6F6F4">&gt; numbers </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">stackalloc</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">int</span><span style="color: #F6F6F4">&#91;</span><span style="color: #BF9EEE">5</span><span style="color: #F6F6F4">&#93;;</span></span>
<span class="line"><span style="color: #F6F6F4">numbers&#91;</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">&#93; </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">10</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Process</span><span style="color: #F6F6F4">(</span><span style="color: #97E1F1; font-style: italic">Span</span><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">&gt; </span><span style="color: #FFB86C; font-style: italic">buffer</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #7B7F8B">  // slicing</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">var</span><span style="color: #F6F6F4"> header </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> buffer&#91;</span><span style="color: #F286C4">..</span><span style="color: #BF9EEE">4</span><span style="color: #F6F6F4">&#93;;</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<h5 class="wp-block-heading">Memory</h5>



<ul class="wp-block-list">
<li>Heap üzerinde çalışır</li>



<li>Async uyumludur</li>



<li>Daha güvenli ama biraz daha maliyetlidir</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Memory&lt;byte> memory = new byte&#91;1024&#93;;
await stream.ReadAsync(memory);</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #97E1F1; font-style: italic">Memory</span><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">&gt; memory </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">new</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">&#91;</span><span style="color: #BF9EEE">1024</span><span style="color: #F6F6F4">&#93;;</span></span>
<span class="line"><span style="color: #F286C4">await</span><span style="color: #F6F6F4"> stream.</span><span style="color: #62E884">ReadAsync</span><span style="color: #F6F6F4">(memory);</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<h5 class="wp-block-heading"></h5>



<p></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="682" src="https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory-1024x682.png" alt="" class="wp-image-5219" srcset="https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory-1024x682.png 1024w, https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory-300x200.png 300w, https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory-768x512.png 768w, https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory-810x540.png 810w, https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory-1140x760.png 1140w, https://www.halildurmus.com/wp-content/uploads/2025/12/span_memory.png 1400w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<h5 class="wp-block-heading">Span vs Memory</h5>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Özellik</th><th>Span</th><th>Memory</th></tr><tr><td>Heap Allocation</td><td>❌</td><td>✅</td></tr><tr><td>Async Kullanım</td><td>❌</td><td>✅</td></tr><tr><td>Performans</td><td>⭐⭐⭐⭐</td><td>⭐⭐⭐</td></tr></tbody></table></figure>



<p></p>



<h4 class="wp-block-heading"><strong>7. Gerçek Hayat Senaryosu (Web API)</strong></h4>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="" style="font-size:1rem;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#282a36"><span style="background:#ebebe6;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#282a36">C#</span></span><span role="button" tabindex="0" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>public async Task&lt;IActionResult> Upload(IFormFile file)
{
  using var stream = file.OpenReadStream();
  byte[] buffer = ArrayPool&lt;byte>.Shared.Rent(81920);

  try
  {
    int read;
    while ((read = await stream.ReadAsync(buffer)) > 0)
    {
      // process
    }
  }
  finally
  {
    ArrayPool&lt;byte>.Shared.Return(buffer);
  }
  return Ok();
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">public</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">async</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">Task</span><span style="color: #F6F6F4">&lt;</span><span style="color: #97E1F1; font-style: italic">IActionResult</span><span style="color: #F6F6F4">&gt; </span><span style="color: #62E884">Upload</span><span style="color: #F6F6F4">(</span><span style="color: #97E1F1; font-style: italic">IFormFile</span><span style="color: #F6F6F4"> </span><span style="color: #FFB86C; font-style: italic">file</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">using</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">var</span><span style="color: #F6F6F4"> stream </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> file.</span><span style="color: #62E884">OpenReadStream</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">[] buffer </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> ArrayPool&lt;</span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">&gt;.Shared.</span><span style="color: #62E884">Rent</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">81920</span><span style="color: #F6F6F4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">try</span></span>
<span class="line"><span style="color: #F6F6F4">  {</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">int</span><span style="color: #F6F6F4"> read;</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">while</span><span style="color: #F6F6F4"> ((read </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">await</span><span style="color: #F6F6F4"> stream.</span><span style="color: #62E884">ReadAsync</span><span style="color: #F6F6F4">(buffer)) </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">    {</span></span>
<span class="line"><span style="color: #7B7F8B">      // process</span></span>
<span class="line"><span style="color: #F6F6F4">    }</span></span>
<span class="line"><span style="color: #F6F6F4">  }</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">finally</span></span>
<span class="line"><span style="color: #F6F6F4">  {</span></span>
<span class="line"><span style="color: #F6F6F4">    ArrayPool&lt;</span><span style="color: #F286C4">byte</span><span style="color: #F6F6F4">&gt;.Shared.</span><span style="color: #62E884">Return</span><span style="color: #F6F6F4">(buffer);</span></span>
<span class="line"><span style="color: #F6F6F4">  }</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">return</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Ok</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#282A36;color:#ebebe6;font-size:12px;line-height:1;position:relative">C#</span></div>



<p></p>



<p>📌 Bu yapı:</p>



<ul class="wp-block-list">
<li>LOH kullanımını azaltır</li>



<li>GC baskısını düşürür</li>
</ul>



<p></p>



<h4 class="wp-block-heading"><strong>8. Özet ve Best Practices</strong></h4>



<ul class="wp-block-list">
<li> Kısa ömürlü nesneleri Gen 0’da tut</li>



<li> LOH allocation’larından kaçın</li>



<li> IDisposable kullanmayı ihmal etme</li>



<li> Finalizer’ı zorunlu değilse yazma</li>



<li> High-performance alanlarda <code>Span&lt;T></code> ve <code>ArrayPool&lt;T></code> kullan</li>
</ul>



<p>GC’yi &#8220;nasıl çalıştığını bilen&#8221; bir geliştirici olmak, kurumsal projelerde seni bir adım öne taşır. Özellikle yüksek trafikli CRM, entegrasyon ve API projelerinde doğru memory yönetimi, performans sorunlarının %80’ini daha oluşmadan engeller.</p>
<p>The post <a href="https://www.halildurmus.com/2026/02/17/cta-memory-management-gc-nasil-calisir/">C#’ta Memory Management, GC Nasıl Çalışır?</a> appeared first on <a href="https://www.halildurmus.com">Halil Durmus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.halildurmus.com/2026/02/17/cta-memory-management-gc-nasil-calisir/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
