System.WeakReference Фрагментация виртуального адресного пространства в C#
У меня есть процесс, который, кажется, создает очень большое количество WeakReferences. Я полагаю, что это вызывает фрагментацию адресного пространства виртуальной памяти для процесса, как я вижу в CDB, что существует четкая ласка смежного пространства памяти для распределения. У процесса достаточно свободного места, поэтому это не проблема LOH или физической памяти, но кажется, что эти слабые ссылки зависают и приводят к тому, что приложение не может выделить непрерывный блок памяти, когда ему нужно создать следующую Куча сегмент.
Ниже приведены выходные данные некоторых команд CDB. Следует отметить, что в вызове! Address -summary есть блок с большими размерами, а также (очень большое) число финализируемых объектов в Gen2 (в основном это System.WeakReference).
Кто-нибудь испытывал это раньше?
0:128> !finalizequeue
The version of SOS does not match the version of CLR you are debugging. Please
load the matching version of SOS for the version of CLR you are debugging.
CLR Version: 4.0.30319.454
SOS Version: 2.0.50727.5662
SyncBlocks to be cleaned up: 0
MTA Interfaces to be released: 0
STA Interfaces to be released: 0
----------------------------------
generation 0 has 8179 finalizable objects (4d28eba4->4d296b70)
generation 1 has 10 finalizable objects (4d28eb7c->4d28eba4)
generation 2 has 408279 finalizable objects (4d100020->4d28eb7c)
Ready for finalization 0 objects (4d296b70->4d296b70)
0:128> !dumpheap -mt 79b99f98 -stat
The version of SOS does not match the version of CLR you are debugging. Please
load the matching version of SOS for the version of CLR you are debugging.
CLR Version: 4.0.30319.454
SOS Version: 2.0.50727.5662
total 0 objects
Statistics:
MT Count TotalSize Class Name
79b99f98 376092 6017472 System.WeakReference
Total 376092 objects
Fragmented blocks larger than 0.5 MB:
Addr Size Followed by
52e96dcc 0.7MB 52f49c6c System.WeakReference
4baa4f24 0.6MB 4bb3e2b4 System.WeakReference
4bb3e2e4 0.7MB 4bbeedf0 System.WeakReference
0:128> !address -summary
-------------------- Usage SUMMARY --------------------------
TotSize ( KB) Pct(Tots) Pct(Busy) Usage
398fa000 ( 943080) : 44.97% 56.26% : RegionUsageIsVAD
19adb000 ( 420716) : 20.06% 00.00% : RegionUsageFree
f56a000 ( 251304) : 11.98% 14.99% : RegionUsageImage
8010000 ( 131136) : 06.25% 07.82% : RegionUsageStack
81000 ( 516) : 00.02% 00.03% : RegionUsageTeb
1561c000 ( 350320) : 16.71% 20.90% : RegionUsageHeap
0 ( 0) : 00.00% 00.00% : RegionUsagePageHeap
1000 ( 4) : 00.00% 00.00% : RegionUsagePeb
1000 ( 4) : 00.00% 00.00% : RegionUsageProcessParametrs
2000 ( 8) : 00.00% 00.00% : RegionUsageEnvironmentBlock
Tot: 7fff0000 (2097088 KB) Busy: 66515000 (1676372 KB)
-------------------- Type SUMMARY --------------------------
TotSize ( KB) Pct(Tots) Usage
19adb000 ( 420716) : 20.06% : <free>
16558000 ( 365920) : 17.45% : MEM_IMAGE
309b000 ( 49772) : 02.37% : MEM_MAPPED
4cf22000 ( 1260680) : 60.12% : MEM_PRIVATE
-------------------- State SUMMARY --------------------------
TotSize ( KB) Pct(Tots) Usage
519b5000 ( 1337044) : 63.76% : MEM_COMMIT
19adb000 ( 420716) : 20.06% : MEM_FREE
14b60000 ( 339328) : 16.18% : MEM_RESERVE
Largest free region: Base 6efff000 - Size 00ff1000 (16324 KB)