Dengan ps
atau alat serupa Anda hanya akan mendapatkan jumlah halaman memori yang dialokasikan oleh proses itu. Nomor ini benar, tetapi:
-
tidak mencerminkan jumlah memori sebenarnya yang digunakan oleh aplikasi, hanya jumlah memori yang dicadangkan untuknya
-
dapat menyesatkan jika halaman dibagikan, misalnya oleh beberapa utas atau menggunakan pustaka yang ditautkan secara dinamis
Jika Anda benar-benar ingin mengetahui jumlah memori yang sebenarnya digunakan aplikasi Anda, Anda perlu menjalankannya di dalam profiler. Misalnya, Valgrind dapat memberi Anda wawasan tentang jumlah memori yang digunakan, dan yang lebih penting, tentang kemungkinan kebocoran memori dalam program Anda. Alat profiler tumpukan Valgrind disebut 'massif':
Massif adalah pembuat profil tumpukan. Ini melakukan pembuatan profil heap secara mendetail dengan mengambil snapshot reguler dari heap program. Ini menghasilkan grafik yang menunjukkan penggunaan tumpukan dari waktu ke waktu, termasuk informasi tentang bagian mana dari program yang paling bertanggung jawab atas alokasi memori. Grafik dilengkapi dengan file teks atau HTML yang mencakup lebih banyak informasi untuk menentukan di mana sebagian besar memori dialokasikan. Massif menjalankan program sekitar 20x lebih lambat dari biasanya.
Sebagaimana dijelaskan dalam dokumentasi Valgrind, Anda perlu menjalankan program melalui Valgrind:
valgrind --tool=massif <executable> <arguments>
Massif menulis dump snapshot penggunaan memori (mis. massif.out.12345
). Ini memberikan, (1) garis waktu penggunaan memori, (2) untuk setiap snapshot, catatan di mana memori program Anda dialokasikan. Alat grafis yang bagus untuk menganalisis file-file ini adalah massif-visualizer. Tapi saya menemukan ms_print
, alat berbasis teks sederhana yang dikirimkan bersama Valgrind, sudah sangat membantu.
Untuk menemukan kebocoran memori, gunakan (default) memcheck
alat valgrind.
Coba perintah pmap:
sudo pmap -x <process pid>