Ini adalah memusage perintah yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
memusage - penggunaan memori profil suatu program
RINGKASAN
pesan [Option] ... program [pilihan program] ...
DESKRIPSI
pesan adalah skrip bash yang memprofilkan penggunaan memori program, program. Itu
memuat terlebih dahulu libmemusage.so perpustakaan ke lingkungan pemanggil (melalui LD_PRELOAD
variabel lingkungan; Lihat ld.jadi(8)). NS libmemusage.so perpustakaan melacak alokasi memori
dengan mencegat panggilan ke malloc(3) panggilan(3) gratis(3), dan mengalokasikan kembali(3); opsional, panggilan
untuk mmap(2) mremap(2), dan munmap(2) juga dapat dicegat.
pesan dapat menampilkan data yang dikumpulkan dalam bentuk tekstual, atau dapat menggunakan status memo(1) (lihat
itu -p opsi, di bawah) untuk membuat file PNG yang berisi representasi grafis dari
data yang dikumpulkan.
Memori pemakaian ringkasan
Output baris "Ringkasan penggunaan memori" oleh pesan berisi tiga bidang:
tumpukan total
Jumlah dari ukuran argumen semua malloc(3) panggilan, produk argumen
(anggota n*ukuran) dari semua panggilan(3) panggilan, dan jumlah panjangnya argumen semua mmap(2)
panggilan. Dalam kasus mengalokasikan kembali(3) dan mremap(2), jika ukuran baru dari
alokasi lebih besar dari ukuran sebelumnya, jumlah dari semua perbedaan tersebut
(ukuran baru dikurangi ukuran lama) ditambahkan.
tumpukan puncak
Maksimal semuanya ukuran argumen dari malloc(3), semua produk dari anggota n*ukuran of
panggilan(3), semua ukuran argumen dari mengalokasikan kembali(3) panjangnya argumen dari mmap(2), dan
ukuran_baru argumen dari mremap(2).
tumpukan puncak
Sebelum panggilan pertama ke fungsi yang dipantau, alamat penunjuk tumpukan
(penunjuk tumpukan dasar) disimpan. Setelah setiap panggilan fungsi, tumpukan yang sebenarnya
alamat penunjuk dibaca dan perbedaan dari penunjuk tumpukan dasar
dihitung. Maksimum dari perbedaan ini adalah puncak tumpukan.
Segera setelah garis ringkasan ini, sebuah tabel menunjukkan nomor panggilan, total memori
dialokasikan atau tidak dialokasikan, dan jumlah panggilan gagal untuk setiap fungsi yang dicegat. Untuk
mengalokasikan kembali(3) dan mremap(2), bidang tambahan "nomove" menunjukkan realokasi yang berubah
alamat blok, dan bidang "des" tambahan menunjukkan realokasi yang menurun
ukuran blok. Untuk mengalokasikan kembali(3), bidang tambahan "gratis" menunjukkan realokasi
yang menyebabkan blok dibebaskan (yaitu, ukuran yang dialokasikan kembali adalah 0).
"Realloc/total memori" dari output tabel oleh pesan tidak mencerminkan kasus di mana
mengalokasikan kembali(3) digunakan untuk mengalokasikan kembali sebuah blok memori agar memiliki ukuran yang lebih kecil dari sebelumnya.
Ini dapat menyebabkan jumlah semua sel "total memori" (tidak termasuk "bebas") menjadi lebih besar dari
sel "bebas/memori total".
Histogram untuk blok ukuran
"Histogram untuk ukuran blok" memberikan perincian alokasi memori ke dalam berbagai
ukuran ember.
PILIHAN
-n nama, --nama program=nama
Nama file program untuk profil.
-p fillet, --png=fillet
Hasilkan grafik PNG dan simpan di fillet.
-d fillet, --data=fillet
Hasilkan file data biner dan simpan di fillet.
-u, --tidak disangga
Jangan buffer output.
-b ukuran, --penyangga=ukuran
Mengumpulkan ukuran entri sebelum menuliskannya.
--tanpa pengatur waktu
Nonaktifkan berbasis timer (SIGPROF) pengambilan sampel nilai penunjuk tumpukan.
-m, --mmap
Juga melacak mmap(2) mremap(2), dan munmap(2).
-?, --membantu
Cetak bantuan dan keluar.
--penggunaan
Cetak pesan penggunaan singkat dan keluar.
-V, --Versi: kapan
Cetak informasi versi dan keluar.
Opsi berikut hanya berlaku saat menghasilkan output grafis:
-t, --berdasarkan waktu
Gunakan waktu (bukan jumlah panggilan fungsi) sebagai skala untuk sumbu X.
-T, --total
Gambarkan juga grafik penggunaan memori total.
--judul=nama
penggunaan nama sebagai judul grafik.
-x ukuran, --x-ukuran=ukuran
Buatlah grafiknya ukuran lebar piksel.
-y ukuran, --y-ukuran=ukuran
Buatlah grafiknya ukuran piksel tinggi.
EXIT STATUS
Status keluar sama dengan status keluar dari program yang diprofilkan.
CONTOH
Di bawah ini adalah program sederhana yang mengalokasikan kembali blok memori dalam siklus yang naik ke puncak
sebelum kemudian secara siklis mengalokasikan kembali memori dalam blok-blok yang lebih kecil yang kembali ke nol.
Setelah mengkompilasi program dan menjalankan perintah berikut, grafik memori
penggunaan program dapat ditemukan di file pesan.png:
$ pesan --data=musage.dat ./a.keluar
...
Ringkasan penggunaan memori: total tumpukan: 45200, puncak tumpukan: 6440, puncak tumpukan: 224
total panggilan memori total panggilan gagal
malloc| 1 400 0
alokasi ulang| 40 44800 0 (nomove:40, des:19, gratis:0)
panggilan| 0 0 0
gratis| 1 440
Histogram untuk ukuran blok:
192-207 1 2% ================
...
2192-2207 1 2% ================
2240-2255 2 4% ===
2832-2847 2 4% ===
3440-3455 2 4% ===
4032-4047 2 4% ===
4640-4655 2 4% ===
5232-5247 2 4% ===
5840-5855 2 4% ===
6432-6447 1 2% ================
$ status memo memusage.dat pesan.png
program sumber
#termasuk
#include
#tentukan SIKLUS 20
int
utama(ke dalam argc, karakter *argv[])
{
int saya, j;
int *p;
printf("malloc: %zd\n", sizeof(int) * 100);
p = malloc(ukuran(int) * 100);
untuk (i = 0; i < SIKLUS; i++) {
jika (i < SIKLUS / 2)
j = saya;
lain
J--;
printf("lokasikan kembali: %zd\n", sizeof(int) * (j * 50 + 110));
p = realoc(p, sizeof(int) * (j * 50 + 100));
printf("lokasikan kembali: %zd\n", sizeof(int) * ((j+1) * 150 + 110));
p = realoc(p, sizeof(int) * ((j + 1) * 150 + 110));
}
gratis(p);
keluar(EXIT_SUCCESS);
}
Gunakan memusage online menggunakan layanan onworks.net