Esistono strumenti disponibili in Linux che visualizzano graficamente o testualmente l'utilizzo della memoria per un programma? Ad esempio, se scrivo un programma C++ e vorrei verificare che gli oggetti siano allocati e deallocati correttamente nella memoria, ci sono applicazioni disponibili che mostrerebbero visivamente gli oggetti che vengono istanziati e cancellati? Quando mi sono abituato a programmare in Visual Studio, ricordo di passare da un programma e utilizzare un pannello di debug per monitorare l'utilizzo della memoria e sto cercando qualcosa di simile a quello in Linux.controlla l'utilizzo della memoria di un programma in Linux
risposta
Non è esattamente quello che stai cercando, ma dai uno sguardo allo Valgrind.
Normalmente eseguo in alto per tenere d'occhio l'utilizzo complessivo della memoria.
conky (screenshots) è un ottimo semplice visualizzatore di risorse del computer che posta sullo sfondo del desktop. Tengo d'occhio l'uso della memoria e l'uso specifico del programma.
È molto difficile calcolare la quantità di memoria utilizzata da un processo su un sistema operativo che supporta la memoria virtuale.
Il problema non sta calcolando la quantità di memoria utilizzata, ma quanto è privato e quanto condiviso.
È possibile visualizzare/proc/pid/maps o/proc/pid/smaps (forse). Questi file ti diranno solo quanta memoria il processo ha mappato nel suo spazio di indirizzamento, non quanto lo sta usando, e sicuramente non quanto sia condiviso con altri processi nel sistema.
Anche le mappe "private" possono essere condivise perché fork() esegue la copia su scrittura, quindi una pagina privata può ancora essere condivisa con un altro processo (correlato - di solito padre o fratello). Inoltre, le pagine che sono state mappate ma mai utilizzate non consumano affatto spazio.
L'RSS (dimensione del set residente) di ogni mappatura può essere visto, ma questo indica solo quanto è residente (in RAM, invece di essere scambiato in un file di scambio, non ancora assegnato, o non ancora richiesto- caricato da un file mappato), ora quanto è condiviso e con cosa.
Credo che la soluzione migliore sarebbe quella di contare la quantità di memoria anonima privata, che potrebbe essere ok, in alcuni casi.
1) Prima esecuzione
ps -u <your user id>
2) Ottenere et pid del processo che si desidera monitorare dall'uscita del 1)
3) Poi gestita
top -p <the pid of the process you want to monitor>
while (/proc/<pid>/status)
echo "VMSize: `ps -p <pid> -o vsize=`" >> ! mem.out
pstack <pid> >> mem.out
sleep 10
end
grep VMSize mem.out | awk -F':' '{print $2}' | sort -r -n | head -1
ti darà la memoria di picco.
Utilizzare anche mem.out per visualizzare il footprint della memoria e la correlazione dello stack corrente.
- 1. Come profilo l'utilizzo della memoria di un programma C
- 2. Storia di utilizzo della memoria Linux
- 3. Memoria di memoria di registrazione in Linux
- 4. Esegui un altro programma in Linux da un programma C++
- 5. Tracciamento della memoria danneggiata su un server Linux di produzione
- 6. allocazione della memoria per il programma C
- 7. Come posso monitorare l'utilizzo della memoria di php in linux?
- 8. Come profilo l'utilizzo della memoria e le prestazioni di un programma openMPI in C
- 9. misurazione della memoria di picco del processo a lunga esecuzione in linux
- 10. Jailing utente al programma della GUI in linux
- 11. Controllare l'utilizzo della memoria in haskell
- 12. Come monitorare un processo in Linux CPU, memoria e tempo
- 13. Limitazione del tempo di esecuzione di un programma in Linux
- 14. Un semplice programma di memoria condivisa C++ scritto su linux: errore di segmentazione
- 15. Perché un programma Java vuoto consuma memoria?
- 16. I file mappati di memoria Linux riservano molta memoria fisica
- 17. Il programma supera la velocità teorica di trasferimento della memoria
- 18. Differenza di utilizzo della memoria Java tra Linux e Windows
- 19. Come caricare l'immagine Linux per appropriarsi della posizione nella memoria
- 20. Condivisione della stessa variabile tra più di un programma indipendente in Linux
- 21. Come trovare la dimensione della memoria virtuale e la dimensione della cache di un sistema Linux?
- 22. Un programma può assegnare direttamente la memoria?
- 23. Python utilizzo della memoria multiprocessing
- 24. Utilizzo memoria: il programma assegna troppa memoria
- 25. Domande su Tipi di memoria di Linux
- 26. L'esecuzione del programma C in Linux Terminal
- 27. Rilevamento del problema di frammentazione della memoria in un processo
- 28. In che modo il DOS carica un programma in memoria?
- 29. dquote> risultato dell'esecuzione di un programma di shell Linux
- 30. Come calcolare l'utilizzo della memoria del programma java?
Buon consiglio. Sembra uno strumento molto utile! – Chris
Con --tool = massif che si ottiene un grafico visivo dell'utilizzo della memoria. –
"valgrind - il tuo nuovo migliore amico" – LiraNuna