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)

0 ответов

Другие вопросы по тегам