my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Libro WP7
|
Libro HTML5
|
Corso on-site HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Lab
Media
Tutorials
Corsi
Libri
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
utilizzo memoria
in
.NET Framework
>
.NET Framework
Ultimo messaggio
magnetica
il 21 febbraio 2010 alle 21:59
28 messaggi
dal 17 novembre 2005
ciao a tutti.
da qualche giorno sto impazzendo per capire dove sia il problema di una applicazione che sto scrivendo..
in pratica è un player mp3. pesca dei files in una directory e li suona in modo sequenziale, facendo una dissolvernza tra uno e l'altro lanciando i diversi mp3 su due diversi canali.
il problema è che il consumo della memoria è preoccupante.
apparentemente tutte le risorse sembrano venir rilasciate correttamente ma ad ogni passaggio di canzone, la memoria aumenta di qualche centinaio di kb.
ne mangia 300, poi ne perde 100, poi ne mangia 500 poi torna al livello di prima per poi andare a 100 in più rispetto a prima..
la cosa continua e dopo diverse ore il sistema va in errore per out of memory
se pero' minimizzo l'applicazione e poi la riporto attiva, la memoria utilizzata passa da 1GB (per es.) a pochi mega..
la cosa poi ricomincia, fino al prossimo minimizza/massimizza o out of memory.
sembra un problema di garbage collection ma nemmeno chiamando esplicitamente la funzione GC.Collect sembra risolvere la cosa.
è possibili monitorare la quantità di memoria utilizzata per capire chi se la mangia?
e perchè minimizzando l'applicazione sembra risolvere la cosa?
ringrazio l'anima pia che mi possa dare una mano in questa cosa :)
grazie
Rispondi
Quoting
Cradle
il 22 febbraio 2010 alle 13:51
1.856 messaggi
dal 01 luglio 2004
Contributi
www.aspitalia.com
|
Blog
Ciao,
devi analizzare la tua applicazione con un profiler, puoi provare ad utilizzare quello built-in in Visual Studio Team System o acquistarne uno commerciale, come ANTS Profiler.
Ti sconsiglio vivamente di chiamare GC.Collect manualmente, non serve a nulla se non a peggiorare le prestazioni della tua applicazione: il GC si accorge da solo quando è in condizione di memory pressure e si preoccupa di liberare la memoria autonomamente; se non lo fa è perchè
1) hai oggetti in generazione 2 (e questo potrebbe essere causato da troppi GC.Collect "manuali"
2) hai oggetti Disposable di cui non invochi il metodo dispose, o con Finalizer ma non sono Disposable
3) hai oggetti che rimangono effettivamente raggiungibili nella tua applicazione e pertanto il GC non può rimuoverli.
Fossi in te, farei prima un'analisi qualitativa sul codice, verificando i 3 punti precedenti. Poi, se il problema non si risolve/mitiga drasticamente, andrei più a fondo con un profiler.
Ciao,
m.
Rispondi
Quoting
magnetica
il 22 febbraio 2010 alle 14:44
28 messaggi
dal 17 novembre 2005
grazie per i consigli utili.
sto facendo passare il codice riga per riga cercando di capire cosa non viene rilasciato.
il problema è che mi sembra tutto ok.. ma la soluzione è, come sempre, dietro l'angolo.
grazie ancora
ciao
Rispondi
Quoting
Revan1985
il 4 marzo 2010 alle 12:51
10 messaggi
dal 27 maggio 2008
Ricaordati che se utilizzi oggetti COM devi usare Marshal.ReleaseComObject();
gli oggetti COM sono abbastanza b*st*rdi, e non basta rilasciarli con .Dispose() [se lo implementano]
mi è capitato varie volte di leggere mp3 con oggetti com, ed avevo comportamenti come il tuo...
ciao
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
Libri
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
E-commerce
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Rilasciato il bollettino MS11-100 per risolvere i problemi di attacchi DoS di ASP.NET
I più letti di oggi
Paginare con i numeri di pagina un datagrid
Concorso Windows Phone: AppLoad and win!
Microsoft lancia Windows 7 e Office 14
Preview 2 di ASP.NET MVC 2.0 ed una nuova versione per AJAX Control Toolkit
Visualizzare un template per browser mobile tramite un custom control ASP.NET
Proteggersi da attacchi di SQL e code injection con ASP
Contare i record restituiti da una query
Formattazione automatica dei TextBlock
Creazione di un alarm con suono personalizzato con Windows Phone 7.1
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Media
Windows Phone 7.5 Developer Day: marketplace e strumenti per monetizzare le app
Windows Phone 7.5 Developer Day: costruire app con Visual Studio 2010 e Windows Phone Runtime
Tutti i media
In evidenza
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Sviluppare applicazioni per Windows Phone: scopri come fare con il nostro nuovissimo libro!
Sviluppa le applicazioni del futuro oggi: impara con il nostro libro HTML5 Espresso!
Community Days 2012 - Milano
Visualizzare un template per browser mobile tramite un custom control ASP.NET
Windows 8 su ARM: avrà il desktop, Office e il connected standby
Rilasciato Entity Framework 4.3
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network