Sono nuovo alla programmazione Windows App Store con C#
e sto cercando di capire come viene gestita la memoria immagini. La mia app è molto semplice:Come gestire WinRT BitmapImage e Image memory
1) fa riferimento a una bitmap da un file utilizzando un oggetto Windows.UI.Xaml.Media.Imaging.BitmapImage
e quindi la utilizza come origine per un oggetto Windows.UI.Xaml.Controls.Image
. Nel mio caso l'immagine sul disco ha dimensioni maggiori di quelle che vengono visualizzate sullo schermo, quindi viene ridimensionata dal sistema.
La mia domanda è: come fa WinRT gestire la memoria per l'immagine? Ho usato lo strumento vmmap
e vedo nella sezione File mappati c'è una voce per il mio file immagine. Immagino che questo significhi che i byte grezzi per questo file siano completamente caricati in memoria. Poiché questo è un JPG, questi byte devono essere decodificati in pixel byte. Sembra dai miei test che l'impostazione dell'UriSource di BitmapImage non causi effettivamente alcuna elaborazione dal momento che richiede 0 ms e che invece si sta verificando un caricamento lento.
Quindi le domande sono: Quale oggetto è il dominatore dei dati di pixel non graduati non compressi? Quale oggetto è il dominatore per i dati di pixel in scala che vengono disegnati sullo schermo? Ci sono strumenti che possono facilmente mostrarmelo? Nel mondo Java utilizzo lo strumento di analisi della memoria Eclipse. Ho provato a utilizzare PerfView ma i risultati non hanno senso per me, sembra che lo strumento fosse pensato per analizzare le prestazioni.
UPDATE:
Alla conferenza costruire la squadra ha discusso la Windows Performance Toolkit
. Non ho mai sentito nessuno parlare PerfView quindi credo che il WPT è l'ultimo e più grande strumento per l'analisi della memoria e prestazioni, ecco un link:
http://msdn.microsoft.com/en-us/performance/cc825801.aspx
C'è un api piuttosto ripida dietro questo, inizia a leggere [qui] (http://msdn.microsoft.com/en-us/library/windows/desktop/ee719902%28v=vs.85%29.aspx) –
Credo che la maggior parte degli oggetti sorgente immagine siano supportati da InMemoryRandomAccessStream o qualcosa di simile. Puoi provare a utilizzare PerfView/PerfMon per cercare di scoprirne un po 'di più. –
Non ricordo esattamente, ma il controllo Image non scala la sorgente in base alle impostazioni della sua dimensione? OSSIA Stai mettendo un controllo in una finestra xaml e l'elemento framework che è il controllo dell'immagine è dimensionato a 800x600 quando l'immagine è realmente 1920x1080? –