Ist mein Heap fragmentiert?

9
%Vor%

Ich habe über Pinning und Fragmentierung gelesen. Es sieht fragmentiert zu mir angesichts der riesigen Menge an freiem Raum. Ich denke, ich muss es jetzt aufspüren.

Gedanken? Feedback?

    
Keith 15.05.2009, 20:28
quelle

1 Antwort

5

Also ... wir wissen, dass wir einen fragmentierten Haufen haben. Die nächste Frage ist: Was verursacht die Fragmentierung? Was verhindert, dass diese freien Objekte freigegeben werden? Die Empfehlungen, die ich gelesen habe, sollen die Objekte direkt nach dem freien Raum untersuchen:

1)! dumpheap -stat 2) Dump die Methodentabelle des freien Objekts:! Dumpheap -mt 000db8e8 3) Wählen Sie ein freies Objekt aus der Liste aus, um es näher zu untersuchen:! Dumpobj 0x2003b0b0 4) Notieren Sie die Größe des Objekts 5) Dump das nächste Objekt danach:! Dumpobj 0x2003b0b0 + 1000 6) Finden Sie das Objekt mit der Referenz! Gcroot 0x2003b0b0 + 1000 7) Dump die gchandle des gefundenen Objekts.

Ich gehe normalerweise in dieses Kaninchenloch, und mein begrenztes Wissen über die .NET API schlägt hier fehl. Ist dies der richtige Weg, um das Problem zu beheben?

Jeff

    
Jeff Costa 18.05.2009, 19:37
quelle