Bana CLR'nin "HighFrequencyHeap" ını açıklayabilir mi?Yüksek Frekans Yığınlığı
cevap
Her statik değişken olursa olsun, bir referans türü veya bir değer türüne içinde bildirilen var olsun, yığın saklanır. sayısı kaç tane olursa olsun, toplamda tek bir yuva oluşturulur. (Bu bir yuva için örneğinin olması gerekmiyor olsa da, olması gerekir.) Bu yığının topluluğunun normal yığından toplanan yığından ayrı olduğunu unutmayın - "yüksek sıklık yığını" olarak bilinir ve uygulama alanı başına bir tane.
here'dan çalındı.
Yüksek frekans yığını, türlerin yöntem tablosu gibi yaygın olarak kullanılan iç veri yapılarını depolamak için kullanılır. Bu, aşağıda gösterildiği gibi WinDbg/SOS kullanılarak doğrulanabilir.
SSCLI book (p. 235) de belirtilmiştir.
İşte !eeheap
--------------------------------------
Domain 1: 006428c0
LowFrequencyHeap: 00340000(2000:2000) Size: 0x2000 (8192) bytes.
HighFrequencyHeap: 00342000(8000:2000) Size: 0x2000 (8192) bytes.
StubHeap: Size: 0x0 (0) bytes.
Virtual Call Stub Heap:
IndcellHeap: Size: 0x0 (0) bytes.
LookupHeap: Size: 0x0 (0) bytes.
ResolveHeap: Size: 0x0 (0) bytes.
DispatchHeap: Size: 0x0 (0) bytes.
CacheEntryHeap: Size: 0x0 (0) bytes.
Total size: Size: 0x4000 (16384) bytes.
--------------------------------------
Jit code heap:
LoaderCodeHeap: 004e0000(10000:1000) Size: 0x1000 (4096) bytes.
Total size: Size: 0x1000 (4096) bytes.
--------------------------------------
Module Thunk heaps:
Module 5ef21000: Size: 0x0 (0) bytes.
Module 00342e9c: Size: 0x0 (0) bytes.
Total size: Size: 0x0 (0) bytes.
--------------------------------------
Module Lookup Table heaps:
Module 5ef21000: Size: 0x0 (0) bytes.
Module 00342e9c: Size: 0x0 (0) bytes.
Total size: Size: 0x0 (0) bytes.
--------------------------------------
Total LoaderHeap size: Size: 0x13000 (77824) bytes.
=======================================
Number of GC Heaps: 1
generation 0 starts at 0x02521018
generation 1 starts at 0x0252100c
generation 2 starts at 0x02521000
ephemeral segment allocation context: none
segment begin allocated size
02520000 02521000 0252e010 0xd010(53264)
Large object heap starts at 0x03521000
segment begin allocated size
03520000 03521000 03523250 0x2250(8784)
Total Size: Size: 0xf260 (62048) bytes.
------------------------------
GC Heap Size: Size: 0xf260 (62048) bytes.
Bildirimi yüksek frekanslı yığın konumu ve çöp toplanan yığınları için çıkış parçası. İşte, Program
statik olarak ayrılmış bir örneği için !dumpobject
için çıktı.
0:000> !dumpheap -type Program
Address MT Size
0252b630 00343858 12
total 0 objects
Statistics:
MT Count TotalSize Class Name
00343858 1 12 TestBench2010.Program
Total 1 objects
0:000> !do 0252b630
Name: TestBench2010.Program
MethodTable: 00343858
EEClass: 0034154c
Size: 12(0xc) bytes
File: C:\workspaces\TestBench2010\TestBench2010\bin\Debug\TestBench2010.exe
Fields:
MT Field Offset Type VT Attr Value Name
00343858 4000001 4 ...Bench2010.Program 0 static 0252b630 p
0:000> !dumpheap -type Program
Address MT Size
0252b630 00343858 12
total 0 objects
Statistics:
MT Count TotalSize Class Name
00343858 1 12 TestBench2010.Program
Total 1 objects
0:000> !do 0252b630
Name: TestBench2010.Program
MethodTable: 00343858
EEClass: 0034154c
Size: 12(0xc) bytes
File: C:\workspaces\TestBench2010\TestBench2010\bin\Debug\TestBench2010.exe
Fields:
MT Field Offset Type VT Attr Value Name
00343858 4000001 4 ...Bench2010.Program 0 static 0252b630 p
Bildirim tip Program
statik referans p
için adresi. Toplanan çöp yığınındaki bir adrese işaret eder. Ayrıca, Yöntem Tablosunun adresini de dikkate alın. Yüksek frekans yığınındaki bir adrese işaret eder.
Bu excellent MSDN article on .Net runtime internals numaralı belgede, yüksek frekans yığınının bir örnek olduğu çeşitli "yükleyici yığınları" ile ilgili iyi bir genel bakış vardır. Bu makaleden
: MethodTables gibi
Sık sık erişilen eserler, MethodDescs, FieldDescs ve Arayüz Maps, bir HighFrequencyHeap üzerinde ayrılacağını böyle EEClass ve ClassLoader ve arama tabloları gibi daha az sık erişilen veri yapıları, olurken, bir LowFrequencyHeap tahsis edilir. StubHeap, kod erişim güvenliğini (CAS), COM sarmalayıcı çağrılarını ve P/Invoke özelliğini kolaylaştıran taslakları barındırır.
Bağlantı bozuk: - \ – Vlad
Ugh, neden makale URL'lerini neden işlenmesi gerektiği gibi kalıcı kaynak olarak ele alabilir. Hiç öğrenecekler mi? İnternet Arşivi'ne teşekkürler. Lütfen bir bağış düşünün! www.archive.org – codekaizen
Veya belki [bu] (http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineMay2005en-us.chm) (uyarı:. içinde chm). – Vlad
Yüksek frekans yığınının noktası, sık sık erişilecek nesnelerin birbirine yakın şekilde depolanmasıdır. Bu işlemin çalışma setini en aza indirir.
Bu gerçekten CLR açısından doğru gelmiyor, yine de. – codekaizen
codekaizen: Hangi kısmı doğru gelmiyor? – Gabe
- 1. Gürültü frekans spektrumunu nasıl çizebilirim?
- 2. değeri frekans
- 3. Frekans Yanıtı Scipy.signal
- 4. Python'da çizim frekans dağılımları
- 5. Pyspark 0gramda Ngram frekans sıralaması
- 6. PortAudio'dan alınan örneklerden frekans bilgilerini C
- 7. Frekans tepki fonksiyonunda (FRF) Matlab gürültüsü
- 8. MATLAB - .wav dosyasının zaman-frekans grafiği grafiği
- 9. Scala: belirli bir kelime ve sayım frekans
- 10. App Engine isteklerinde Yüksek Olmayan Zamanın yüksek değişkenliğine neden olabilir?
- 11. En yüksek Unicode karakteri?
- 12. Yüksek bellek kullanımı,
- 13. Yüksek kaliteli dönüştürme ico
- 14. Glassfish - yüksek CPU kullanımı
- 15. setVideoSize() yüksek çözünürlükle çöküyor
- 16. Yüksek çözünürlüklü zamanlayıcılar, Windows
- 17. Meld, 10.13 yüksek hızda
- 18. Çerçeve hızı çok yüksek
- 19. mongodb yüksek işlemci kullanımı
- 20. yüksek dereceden fonksiyonlar Kısacası
- 21. Yüksek Kalite JFreeChart grafikleri
- 22. NSTextAttachmentCell bir mil yüksek
- 23. Yüksek performanslı dizi ortalama
- 24. Ggplot'ta birikimli frekans dağılımını çizmenin daha kolay yolu?
- 25. Huffman Ağacı Verilen Frekans ile Başlamak için nasıl karıştırın? Java
- 26. Ben sadece ekleyebilirsiniz Ben bir sütun varchar başlıklı Frekans sahip
- 27. Likert verisi için frekans tablosunda sıfır frekansları dahil et
- 28. Frekans verilerinin örnek sayılarına dönüştürülmesinin en iyi yolu nedir (tamsayı)
- 29. fft dosyasının frekans genlik ve fazını fft ile bul
- 30. FFT sonucundaki frekans alanı entropisi nedir ve nasıl hesaplanır?
Yani çöp toplayıcı statik değişkenlerle çalışmıyor? hafızadan nasıl atabiliriz? – Vikram
Yani statik sınıf ve statik değişkenler veya yöntem arasındaki fark nedir? – Vikram
Statik değişkenlerin tüm noktası, appdomain'in ömrü boyunca var olmalarıdır, bu nedenle tanım olarak asla çöp toplanmayacaklardır - en azından appdomain/process çıkana kadar değil. Statik sınıflar, statik yöntemler ve statik değişkenler arasındaki farklar tamamen farklıdır ve fark C# 101'dir.Statik değişkenler "sınıf düzeyi" dir - değişkenin bir örneği appdomain boyunca oluşturulduğu sınıfın içine göre oluşturuldu. Statik yöntemler, bir örnekte çağrılması gerekmeyen bir sınıftaki yöntemlerdir - temelde küresel işlevler. –