Domanda

Sono rimasto bloccato in un problema con gflags quando si cerca di trovare delle perdite di memoria in un'applicazione di Windows.

Quando accendo il Ust bandierina (al fine di raccogliere le allocazioni di memoria impilare tracce) il ricordo dei miei aumenti di applicazione molto più velocemente di quanto non faccia quando la bandiera è spento (si raggiunge a 800 Mb a 10 min aprox., che è lontano dalla 50-100MB / giorno ricevo quando la bandiera è spento).

Ho letto che c'è un massimo per le tracce di stack di 32 MB, quindi suppongo che questo non dovrebbe essere un problema.

Il computer è un 4x Intel (R) Xeon (R) CPU E5410 @ 2.33GHz .

Se qualcuno mi potrebbe dare qualche suggerimento mi piacerebbe davvero apprezzare.

Grazie!

È stato utile?

Soluzione

Il database di stack trace non è l'unico impatto della bandiera ust. Si aggiunge anche almeno 32 byte a ciascuna assegnazione, al fine di conservare la traccia di stack id. Questo potrebbe spiegare il vostro aumento di memoria se sono coinvolti un sacco di piccole allocazioni. Se si avvia il processo con un debugger o compilato il processo con l'obiettivo di debug, i cumuli di Windows sarà impostato in modalità debug e l'overhead per l'assegnazione sarà ancora più grande.

Altri suggerimenti

È possibile impostare la dimensione massima del database di traccia utilizzando / tracedb SizeInMB Vedere la MSDN documentazione gflags per capitolo e versetto. Per impostazione predefinita, non v'è alcuna dimensione massima che molto probabilmente spiega il comportamento che avete visto.

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