Attualmente sto memorizzando molti diversi tipi di oggetti in HttpRuntime.Cache di ASP.NET e mi chiedevo se c'è un modo per capire quanto è grande ciascun oggetto?Come posso ottenere la dimensione di un oggetto in HttpRuntime.Cache?
risposta
un'occhiata a queste domande:
Getting the size of a field in bytes with C#
Find out the size of a .net object
In particolare, cercare la risposta di Jon Skeet a quelle domande. Ti diranno perché il numero non sarà preciso.
Come per ottenere un preventivo, non c'è modo di farlo se non ci sono determinati criteri da soddisfare per il vostro oggetto.
Ad esempio, se nella cache sono presenti molti oggetti, i riferimenti di condivisione ad alcune istanze di oggetti comuni, la serializzazione di uno di quegli oggetti nella cache serializzerà una copia di tali oggetti comuni, gonfiando i risultati.
Una cosa che puoi fare è serializzare l'oggetto su un file su disco. Questo dovrebbe darti un'idea.
Questo cache manager da ASP Alliance potrebbe aiutare pure
Ho provato lo strumento ASP Alliance e ottengo "I dati non possono essere serializzati in Xml" per la maggior parte degli oggetti a cui sono interessato ... Qualcuno ha codice di esempio per prelevare elementi arbitrari da 'HttpRuntime.Cache' e serializzarlo? –
Grazie - sembra che non ci sia un modo completamente preciso, ma potrebbe essere abbastanza buono per quello che sto cercando di fare. –
@JonTackabury, che metodo hai usato? –