Warning: count(): Parameter must be an array or an object that implements Countable in /home/kazimce1/public_html/wp-content/plugins/microkids-related-posts/microkids-related-posts.php on line 645
CLR bize iki tipte garbage collection modu kullanımı sunmaktadır :
1- Workstation garbage collection.
2- Server garbage collection.
Server GC
Server GC tipi çok işlemcili makinalar için tasarlanmış olup genellikle web, uygulama ve database sunucusu gibi hizmet veren sunucularda çalışan uygulamalar için kullanılmaktadır. Bu mod sadece çok işlemcili makinalarda için kullanabilmektedir. Server GC modunda her işlemci için bir GC heap ve bir GC thread oluşturulup paralel bir şekilde kullanılmaktadır. Bu modda saniye başına yapılan iş maksimum seviyede olup iyi ölçeklenebilirlik davranışı sergilemektedir. Özellikle dört yada daha fazla işlemcide iyi bir performans sergilemektedir. Server GC modu çok işlemcili makinalarda varsayılan olarak gelmemektedir, uygulamanızın config dosyasında Server GC modunda çalışacağını belirtmeniz gerekmektedir. Server Mode ile çalışmanın en önemli avantajı ise paralel veya multi-thread olarak çalışabilmesidir.
Workstation GC
Workstation GC modu varsayılan GC modudur. Tek işlemcili makinalarda sadece bu mod seçilebilmektedir ve normalde tek işlemcili tüm istemcilerde bu mod kullanılmaktadır. Workstation modu, kullanıcıya maksimum cevap verilebilirlik için tercih edilmekte olup Concurrent ve non-Concurrent çalışacak şekilde ele alınabilir. Varsayılan olarak Concurrent çalışma prensibi uygulanır. Buna göre GC mekanizması uygulama ile birlikte ayrı bir Thread üzerinden işlemlerini gerçekleştirir.
Concurrent GC:
Concurrent GC çok işlemcili makinalarda Workstation modunda çalışıldığında kullanılabilmektedir. Bu kullanım grafik arayüze sahip uygulamalar yada uygulamanın kilitlenmemesinin hayati önem taşıdığı durumlar için uygundur. Unutmamak gerekir ki Concurrent GC sadece generation 2 ile kullanılmaktadır; generations 0 ve 1 her zaman non-concurrent ve daha hızlıdır.
Varsayılan olarak tek işlemcili yada çok işlemcili makinalarda Workstation GC modunda concurrent çalışma prensibi aktif olarak gelmektedir.
Application config dosyasından Server GC modu kullanacağımızı belirtecek olursak :
<configuration> <runtime> <gcServer enabled="true"/> </runtime> </configuration>
Concurrent çalışma prensibini aktifleştırecek olursak :
<Configuration> <runtime> <gcServer enabled="false" /> <gcConcurrent enabled="true" /> </runtime> </Configuration>
Ayrıca uygulamanızın hangi GC modunda çalıştığını :
GC mscorwks.dll ve mscorsvr.dll olmak üzere iki ana DLL içermektedir. Eğer uygulamanız server modda çalışıyorsa mscorsvr.dll‘i yüklenir, workstation modda ise mscorwks.dll‘i yüklenir. Process’lerden hangi dll’in yüklendiğini gözlemleyebilirsiniz.
Kaynak ;
Fundamentals of Garbage Collection
Garbage Collector Basics and Performance Hints
.Net Memory Management’ i Kavramak
0 thoughts on “Garbage Collection Modları”