.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2013, Peter Schiffer .\" and Copyright (C) 2014, Michael Kerrisk .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH memusage 1 "2. maj 2024" "Linux man\-pages 6.8" .SH NAVN memusage \- lav en profil over forbruget af hukommelse for et program .SH SYNOPSIS .nf \fBmemusage\fP [\fItilvalg\fP]... \fIprogram\fP [\fIprogramtilvalg\fP]... .fi .SH BESKRIVELSE \fBmemusage\fP er et bash\-skript, der profilerer brugen af hukommelse for programmet \fIprogram\fP. Biblioteket \fBlibmemusage.so\fP indlæses først i kalderens miljø (via miljøvariablen \fBLD_PRELOAD\fP; se \fBld.so\fP(8)). Biblioteket \fBlibmemusage.so\fP registrerer hukommelsesallokering ved at opfange kald til \fBmalloc\fP(3), \fBcalloc\fP(3), \fBfree\fP(3) og \fBrealloc\fP(3); valgfrit kan kald til \fBmmap\fP(2), \fBmremap\fP(2) og \fBmunmap\fP(2) også opfanges. .P \fBmemusage\fP kan vise de indsamlede data i tekstform, eller kan bruge \fBmemusagestat\fP(1) (se tilvalget the \fB\-p\fP, nedenfor) til at oprette en PNG\-fil indeholdende grafisk repræsentation af de indsamlede data. .SS "Overblik over hukommelsesforbruget" »Overblik over hukommelsesforbruget«\-linjeresultatet fra \fBmemusage\fP indeholder tre felter: .RS 4 .TP \fBheap total\fP Sum af \fIstørrelse\fP\-argumenter for alle \fBmalloc\fP(3)\-kald, produkter for argumenter (\fInmemb\fP*\fIstørrelse\fP) for alle \fBcalloc\fP(3)\-kald og summen af \fIlængde\fP\-argumenter for alle \fBmmap\fP(2)\-kald. I tilfældet \fBrealloc\fP(3) og \fBmremap\fP(2), hvis den nye størrelse for en allokering er større end den tidligere størrelse, så tilføjes summen for alle sådanne forskelle (ny størrelse minus gammel størrelse). .TP \fBheap peak\fP Maksimum for alle \fIstørrelse\fP\-argumenter for \fBmalloc\fP(3), alle produkter for \fInmemb\fP*\fIstørrelse\fP for \fBcalloc\fP(3), alle \fIstørrelse\fP\-argumenter for \fBrealloc\fP(3), \fIlængde\fP\-argumenter for \fBmmap\fP(2) og \fInu_størrelse\fP\-argumenter for \fBmremap\fP(2). .TP \fBstack peak\fP Før det første kald til enhver overvåget funktion så gemmes stakpegeradressen (grundstakpegeren). Efter hvert funktionskald så læses den faktiske stakpegeradrese og forskellen fra grundstakpegeren beregnes. Maksimum for disse forskelle er hvor stakken havde toppunkt. .RE .P Umiddelbart efter denne summerede linje viser en tabel antallet af kald, samlet hukommelse allokeret eller deallokeret samt antallet af mislykkede kald for hver opfanget funktion. For \fBrealloc\fP(3) og \fBmremap\fP(2), viser det ekstra felt »nomove« reallokeringer, der ændrede adressen for en blok og det ekstra felt »dec« viser reallokeringer, der formindskede blokstørrelsen. For \fBrealloc\fP(3) viser det ekstra felt »free« reallokeringer der fik en blok til at blive frigivet (dvs. den reallokerede størrelse var 0). .P »realloc/total memory« for tabelresultatet fra \fBmemusage\fP reflekterer ikke tilfælde hvor \fBrealloc\fP(3) bruges til at reallokere en hukommelsesblok til en mindre størrelse end tidligere. Dette kan medføre at sum for alle »total memory«\-celler (eksklusive »free«) er større end »free/total memory«\-cellen. .SS "Histogram for blokstørrelser" »Histogram for blokstørrelser« tilbyder en nedbrydning af hukommelsesallokeringer til diverse bucket\-størrelser. .SH TILVALG .TP \fB\-n\ \fP\fInavn\fP,\ \fB\-\-progname=\fP\fInavn\fP Navn på programfilen der skal profileres. .TP \fB\-p\ \fP\fIfil\fP,\ \fB\-\-png=\fP\fIfil\fP Opret PNG\-grafik og lagr denne i \fIfi\fP. .TP \fB\-d\ \fP\fIfil\fP,\ \fB\-\-data=\fP\fIfil\fP Opret binær datafil og lagr denne i \fIfil\fP. .TP \fB\-u\fP,\ \fB\-\-unbuffered\fP Mellemlagr ikke resultatet. .TP \fB\-b\ \fP\fIstørrelse\fP,\ \fB\-\-buffer=\fP\fIstørrelse\fP Indsaml \fIstørrelse\fP\-elementer før de skrives. .TP \fB\-\-no\-timer\fP Deaktiver timer\-baseret (\fBSIGPROF\fP) sampling af stakpegerværdi. .TP \fB\-m\fP,\ \fB\-\-mmap\fP Registrer også \fBmmap\fP(2), \fBmremap\fP(2) og \fBmunmap\fP(2). .TP \fB\-?\fP,\ \fB\-\-help\fP Vis hjælpeteksten og afslut. .TP \fB\-\-usage\fP Vis en kort brugsbesked og afslut. .TP \fB\-V\fP,\ \fB\-\-version\fP Vis versionsinformation og afslut. .TP De følgende tilvalg er kun gælden når der oprettes grafik: .TP \fB\-t\fP,\ \fB\-\-time\-based\fP Brugstid (frem for antallet af funktionskald) som skala for x\-aksen. .TP \fB\-T\fP,\ \fB\-\-total\fP Tegn også en graf over den samlede brug af hukommelse. .TP \fB\-\-title=\fP\fInavn\fP Use \fInavn\fP som grafens titel. .TP \fB\-x\ \fP\fIstørrelse\fP,\ \fB\-\-x\-size=\fP\fIstørrelse\fP Gør grafen \fIstørrelse\fP billedpunkter bred. .TP \fB\-y\ \fP\fIstørrelse\fP,\ \fB\-\-y\-size=\fP\fIstørrelse\fP Gør grafen \fIstørrelse\fP billedpunkter høj. .SH AFSLUT\-STATUS Afslutningsstatus for \fBmemusage\fP svarer til afslutningsstatus for det profilerede program. .SH FEJL For at rapportere fejl, se .UR http://www.gnu.org/software/libc/bugs.html .UE .SH EKSEMPLER Nedenfor er et simpelt program, der reallokerer en hukommelsesblok i cyklusser, der stiger til et toppunkt før cyklist reallokering af hukommelsen i mindre blokke, der returnerer til nul. Efter kompilering af programmet og afvikling af de følgende kommandoer kan en graf over hukommelsesforbruget findes i filen \fImemusage.png\fP: .P .in +4n .EX $ \fBmemusage \-\-data=memusage.dat ./a.out\fP \&... Memory usage summary: heap total: 45200, heap peak: 6440, stack peak: 224 total calls total memory failed calls malloc| 1 400 0 realloc| 40 44800 0 (nomove:40, dec:19, free:0) calloc| 0 0 0 free| 1 440 Histogram for block sizes: 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% ================ $ \fBmemusagestat memusage.dat memusage.png\fP .EE .in .SS Programkilde .EX #include #include \& #define CYCLES 20 \& int main(int argc, char *argv[]) { int i, j; size_t size; int *p; \& size = sizeof(*p) * 100; printf("malloc: %zu\en", size); p = malloc(size); \& for (i = 0; i < CYCLES; i++) { if (i < CYCLES / 2) j = i; else j\-\-; \& size = sizeof(*p) * (j * 50 + 110); printf("realloc: %zu\en", size); p = realloc(p, size); \& size = sizeof(*p) * ((j + 1) * 150 + 110); printf("realloc: %zu\en", size); p = realloc(p, size); } \& free(p); exit(EXIT_SUCCESS); } .EE .SH "SE OGSÅ" \fBmemusagestat\fP(1), \fBmtrace\fP(1), \fBld.so\fP(8) .PP .SH OVERSÆTTELSE Oversættere af denne manual til dansk Joe Hansen . .PP Denne oversættelse er gratis dokumentation; læs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. .PP Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til .MT debian-l10n-danish@lists.debian.org .ME .