Domanda

0:000> !dumpheap -stat
total 1755874 objects
Statistics:
MT    Count    TotalSize Class Name
7b9b0c64        1           12 System.Windows.Forms.Layout.TableLayout+ColumnSpanComparer
....
7933303c    14006      4926456 System.Collections.Hashtable+bucket[]
65246e00      804      4982192 System.Data.RBTree`1+Node[[System.Int32, mscorlib]][]
054c55f0    44240      5662720 DevExpress.Utils.AppearanceObject
793040bc    98823      7613156 System.Object[]
793308ec   293700     55820016 System.String
002435f0    50315    138631888      Free
Total 1755874 objects

Fragmented blocks larger than 0.5 MB:
    Addr     Size      Followed by
15a195c8    0.8MB         15ae3950 System.Collections.ArrayList
15d81468    1.6MB         15f23708 System.String
15f23984    1.0MB         16029ae4 System.String
... about 7 more objects here
1ee51764    0.5MB         1eedbaa4 System.WeakReference
1f0df96c    2.4MB         1f34d4b0 System.String
1f3e1ca8    3.7MB         1f79afc4 System.WeakReference

Ho letto su pinning e la frammentazione. La sua looking frammentato per me dato l'enorme quantità di spazio libero. Mi sa che devo ora rintracciarlo.

Pensieri? il feedback?

È stato utile?

Soluzione

Quindi ... sappiamo di avere un mucchio frammentato. La domanda successiva è: cosa sta causando la frammentazione? Che cosa è mantenere questi oggetti liberi di essere rilasciato? Le raccomandazioni che ho letto è quello di esaminare gli oggetti subito dopo lo spazio libero:

  1. ! Dumpheap -stat

  2. Dump tavolo metodo dell'oggetto libero:! Dumpheap -MT 000db8e8

  3. Selezionare un oggetto libero dalla lista per esaminare più da vicino: dumpobj 0x2003b0b0

  4. Registra le dimensioni dell'oggetto

  5. Dump l'oggetto successivo dopo che è:! Dumpobj 0x2003b0b0 + 1000

  6. Trova l'oggetto che contiene un riferimento! Gcroot 0x2003b0b0 + 1000

  7. Dump la GCHandle dell'oggetto trovato.

Io di solito ottenere su questa tana del coniglio, e la mia limitata conoscenza delle API .NET fallisce qui. E 'questo il modo corretto per eseguire il debug del problema?

Jeff

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top