Sind bei modernen Betriebssystemen noch Speicherlecks möglich?

437
DarkDestry

Sind bei Modern OS nach dem Beenden der Anwendung noch Speicherlecks möglich? Nach meinem Verständnis verwaltet Modern OS den Speicher recht gut und löscht den Speicher, sobald die Anwendung beendet wird. Dies bedeutet, dass ich bei einem Speicherverlust die betreffende Anwendung einfach beenden kann, um das Problem zu beheben. Ist das wahr?

Sind auf der GPU auch Speicherverluste möglich? Ich gehe davon aus, dass, da das Betriebssystem nur CPU-Speicher verwaltet, GPUs viel anfälliger für Speicherverluste durch Abstürze sind. Gibt es einen ähnlichen Mechanismus in den Treibern, der überwacht, zu welcher Anwendung der Speicher auf der GPU gehört? Oder ist die einzige Lösung für GPU-Speicherverluste ein vollständiger Neustart?

Bearbeiten: Hinweis: Ich frage nach, wann die Anwendung beendet wird. Mir ist bekannt, dass während der Laufzeit der Anwendung für jede Sprache Speicherverluste möglich sind. Was gefragt wird, ist, was passiert, wenn die Anwendung aufgrund einer Ausnahme erwartungsgemäß oder unerwartet für CPU- und GPU-Speicher beendet wird.

0
Speicherverluste hängen vom Zugriff / der Verwendung Ihres Arbeitsspeichers durch eine Anwendung ab. Sie treten im Allgemeinen auf, wenn ein Programm nicht für die Wiederverwendung von Speicher optimiert ist, der zugewiesen wurde oder neu zugewiesen wird. Um es einfach zu machen: Einige Programme geben keinen übermäßigen Cache-Speicher ab. Dadurch frisst das Programm mehr und mehr Speicherplatz und verursacht Speicherverluste. t a b designworks vor 7 Jahren 0
Obwohl die allgemeine Antwort ja wäre, denke ich, dass diese Frage in erster Linie meinungsbasiert ist. LPChip vor 7 Jahren 0
Beachten Sie, dass ein Speicherverlust nicht mehr besteht, wenn ein Programm beendet wird. Speicherverluste sind in einer Anwendung enthalten und treten nur auf, wenn das Programm ausgeführt wird. Nach dem Beenden wird der gesamte von der Anwendung verwendete Speicher wieder freigegeben, auch wenn die Anwendung diesen Speicher schlecht verwaltet hat. Speicherverluste sind ein sehr spezifisches Phänomen bei Anwendungen, die eine Heap-Struktur zum Speichern von Daten in abstrakten Datentypen verwenden. es bezieht sich nicht auf allgemeinere Verluste an verfügbarem Speicher oder sogar auf Anwendungen, die viel Speicher verwenden oder ihren Verbrauch im Laufe der Zeit erhöhen. Frank Thomas vor 7 Jahren 2
@FrankThomas Danke für die Antwort. Das war es, wonach ich suchte. Können Sie die Logik auf GPU-Speicher erweitern? gilt dasselbe für GPU-Speicher? DarkDestry vor 7 Jahren 0

1 Antwort auf die Frage

0
WayneB

Ja, sie sind noch möglich. Sie treten auf, wenn ein Programmierer Speicher zuweist und diesen Speicher nicht freigibt, wenn er damit fertig ist.

Ich weiß, dass es innerhalb der Laufzeit eines Programms noch möglich ist. Ich weiß, dass es auch mit Hochsprachen möglich ist. Die Frage ist, wann die Anwendung beendet wird. DarkDestry vor 7 Jahren 0