Speichergrösse eines Prozesses
-
Hallo Leute,
habe folgendes Problem, bei "ps aux" bekomme ich folgende Ausgabe:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 10532 0.1 4.6 2097628 11828 pts/4 S+ Jan18 14:18 ./test
Was mir auf faellt ist der VSZ-Wert, der wird immer großer:
vsz VSZ virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to
change. (alias vsize).Seit dem ich mit Thread arbeite habe ich dieses Problem.
Nur weis ich nicht woran es liegt?
Hat jemand eine Loesung?Der Thread wird mit return(NULL); beendet.
Gruss Olli.
-
Wie groß wird denn der Wert? Hört das steigen irgendwann wieder auf?
-
Ohne genauere Informationen fällt mir dazu nichts ein, außer das du vielleicht mal valgrind benutzen solltest. valgrind ist ein Programm um die Speicherbenutzung deines Programmes zu "debuggen".
-
Wie groß wird denn der Wert? Hört das steigen irgendwann wieder auf?
Der Wert bleibt dann bei ca. 2097628 stehen und erhoeht sich nicht mehr.
Und wenn der Wert erreicht ist, funktioniert der Thread auch nicht mehr.Hier ist der Code fuer den Thread:
/* Thread starten. */ void route_check_fork(register int i) { pthread_t pid; #ifdef __WIN32__ pid = (pthread_t)_beginthread((void*)route_check32, 0, (void*)i); #else pthread_create (&pid, NULL, route_check32, (void*)i); #endif /* __WIN32__ */ } /* DNS aufloesen. */ void *route_check32(void *p) { route_check((int)p); #ifdef __WIN32__ ExitThread(4); #endif /* __WIN32__ */ /* Thread wird mit RETRUN(NULL); beendet. */ return(NULL); } /* Pruefe Hostname, ggf. neue */ /* IP-Adresse eintragen. */ void route_check(register int i) { struct hostent *host; /* Default-Route. */ if (i == EOF) { default_route.busy = TRUE; /* Hostname pruefen. */ host = gethostbyname(default_route.hostname); /* Hostname konnte nicht aufgeloest werden? */ if (host == FALSE) { /* Schreibschutz deaktivieren. */ default_route.busy = FALSE; return; } /* IP-Adresse aktualisieren. */ (void)memcpy(default_route.ip_addr, host->h_addr_list[0], 4); /* Timer neu aufziehen. */ default_route.update = R_UPDATE; /* Original UDP-Port setzen. */ default_route.udp_port = default_route.org_udp_port; } else { /* Schreibschutz aktivieren. */ route_tbl[i].busy = TRUE; /* Hostname pruefen. */ host = gethostbyname(route_tbl[i].hostname); /* Hostname konnte nicht aufgeloest werden? */ if (host == FALSE) { /* Schreibschutz deaktivieren. */ route_tbl[i].busy = FALSE; return; } /* IP-Adresse aktualisieren. */ (void)memcpy(route_tbl[i].ip_addr, host->h_addr_list[0], 4); /* Timer neu aufziehen. */ route_tbl[i].update = R_UPDATE; /* Original UDP-Port setzen. */ route_tbl[i].udp_port = route_tbl[i].org_udp_port; /* Schreibschutz deaktivieren. */ route_tbl[i].busy = FALSE; } }
Ohne den Code habe ich dieses Speicher Problem nicht.
Gruss Olli.
-
Und was sagt valgrind?
-
Und was sagt valgrind?
Mit valgrind habe ich noch nix gemacht. Werde da mal Google fragen
wie man valgrind anwendet...Gruss Olli.
-
Seid dem ich funktion pthread_join eingefuegt habe, funktioniert nun alles.
Der VSZ-Wert bleibt nun konstant.Gruss Olli.