Ubuntu hat schnell keinen RAM mehr und mein Computer friert ein. Welcher Befehl löst das?

73

Es passiert mir ziemlich oft, wenn ich im Hintergrund Software kompiliere und plötzlich alles langsamer wird und irgendwann einfriert [wenn ich nichts tue], da mir sowohl der RAM- als auch der Swap-Speicherplatz ausgehen.

Bei dieser Frage wird davon ausgegangen, dass ich genügend Zeit und Ressourcen habe, um Gnome Terminal zu öffnen, meinen Verlauf zu durchsuchen und einen sudoBefehl auszuführen .

Welcher Befehl erspart mir einen harten Neustart oder einen Neustart überhaupt?

Akiva
quelle
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Thomas Ward
1
Wenn Ihnen der Swap-Bereich ausgeht, haben Sie meines Erachtens zu wenig davon. Ich habe 20G Swap Space auf diesem Computer. Der Punkt ist, dass Sie genug Zeit mit einem verwendbaren System haben, um alles zu töten, was Ihr Gedächtnis verschlingt. Es ist nicht etwas, wo Sie nur nehmen, was Sie verwenden, aber was Sie hoffen, dass Sie nie verwenden werden.
JoL
1
Sind Sie sicher, dass sowohl RAM als auch Swap gefüllt werden? Wenn dies der Fall wäre, würde der OOM-Handler Ihren Compiler beenden und Speicher freigeben (und auch Ihren Erstellungsprozess vermasseln). Ansonsten denke ich, dass es nur voll wird und Ihr System möglicherweise langsam ist, weil sich Ihr Swap auf Ihrer Systemfestplatte befindet.
Sudo
3
Versuchen Sie, die Anzahl Ihrer parallelen Builds zu verringern, wenn Sie nicht über genügend RAM verfügen, um dies zu unterstützen. Wenn dein Build zu tauschen beginnt, wirst du viel langsamer sein. Mit make, versuchen Sie -j4zum Beispiel für 4 parallel zu einer Zeit aufbaut.
Shahbaz
1
"Alexa bestellen Sie mich 8 Gigs RAM"

Antworten:

84

Nach meiner Erfahrung verwenden Firefox und Chrome mehr RAM als meine ersten 7 Computer zusammen. Wahrscheinlich mehr als das, aber ich komme von meinem Standpunkt weg. Als erstes sollten Sie Ihren Browser schließen . Ein Kommando?

killall -9 firefox google-chrome google-chrome-stable chromium-browser

Ich habe die gängigsten Browser in einem Befehl zusammengefasst, aber wenn Sie offensichtlich etwas anderes ausführen (oder wissen, dass Sie keinen dieser Befehle verwenden), ändern Sie einfach den Befehl. Das killall -9 ...ist das Wichtige. Die Leute haben Zweifel SIGKILL(Signal Nummer 9), aber die Browser sind extrem belastbar. SIGTERMDarüber hinaus bedeutet das langsame Beenden über , dass der Browser eine Menge Bereinigungsmüll ausführt - was eine Menge zusätzlichen Arbeitsspeichers erfordert - und das können Sie sich in dieser Situation nicht leisten.

Wenn Sie das nicht in ein bereits laufendes Terminal oder einen Alt+ F2-Dialog bringen können, sollten Sie zu einem TTY wechseln. Control+ Alt+ F2Finden Sie auf TTY2 erhalten , die Sie (obwohl es auch sein mag langsam) und sollte auch können Sie verwenden , um etwas wie einzuloggen erlauben sollte htopzu debuggen das Problem. Ich glaube nicht, dass mir jemals der Arbeitsspeicher ausgeht, bis ich nicht mehr htopaufstehen konnte.

Die langfristige Lösung besteht darin, entweder mehr RAM zu kaufen, über einen Remote-Computer zu mieten oder nicht das zu tun, was Sie gerade tun. Ich überlasse Ihnen die komplizierten wirtschaftlichen Argumente, aber im Allgemeinen ist RAM günstig zu kaufen, aber wenn Sie nur einen Burst-Betrag benötigen, ist ein VPS-Server, der pro Minute oder Stunde in Rechnung gestellt wird, eine gute Wahl.

Oli
quelle
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Thomas Ward
Ich habe ein paar Befehle mit meinem eigenen lazygitBefehl verknüpft, die ich von Zeit zu Zeit verwende. Vielleicht könnte hier so etwas angewendet werden? Das gesamte killall ...Drehbuch könnte auf ein einfaches emptyramoder ähnliches reduziert werden
Francisco Presencia
Sie müssen nicht den vollständigen Befehl ausführen, wenn Sie wissen, welcher Browser ausgeführt wird, und ich gehe davon aus, dass die meisten Leute, die einen RAM-Mangel feststellen können, dies tun. Im Übrigen fällt es mir schwerer, mich daran zu erinnern, dass ich ein emptyramDrehbuch geschrieben habe, als mich nur einzuschalten killall -9 firefox.
Oli
2
RAM kaufen ... warum nicht einfach mehr RAM herunterladen?
Stephan Bijzitter
1
Sie machen vielleicht Witze, aber wenn Sie für eine kurze Zeit etwas tun müssen, das viel mehr RAM und CPU benötigt, als Sie haben, ist das Mieten eines VPS pro Minute für One-Shots ziemlich sparsam.
Oli
66

Auf einem System mit aktiviertem Magic System Request Key wird durch Drücken von Alt + System Request+ f(wenn nicht auf Ihrer Tastatur markiert, System Requestwird häufig die Print ScreenTaste gedrückt) der Kernel-Killer (oomkiller) aufgerufen, der versucht, den schlimmsten fehlerhaften Prozess auszuwählen Speichernutzung und töte es. Sie können dies tun, wenn Sie möglicherweise weniger Zeit als beschrieben haben und das System gerade dabei ist, das Thrashen zu starten (oder bereits begonnen hat) - in diesem Fall ist es Ihnen wahrscheinlich egal, was genau getötet wird, nur dass Sie damit enden mit einem brauchbaren System. Manchmal kann dies dazu führen, dass X getötet wird, aber heutzutage ist es meistens viel besser, einen schlechten Prozess auszuwählen, als es früher der Fall war.

Muzer
quelle
5
@ T.Sar, wenn du direkt in den Kampf schlägst, verlierst du entweder oder hast die Chance, den Speicherfresser zu töten. Sie gewinnen nichts, wenn Sie einfach nicht schauspielern.
Ruslan
4
@Muzer dies nur funktioniert , wenn Sie festgelegt haben , kernel.sysrqum 1oder eine Nummer , einschließlich der richtigen Bit in Ihrem /etc/sysctl.d/10-magic-sysrq.conf.
Ruslan
9
@T.Sar Du wirst deinen Fortschritt nicht verlieren, wenn du ein vernünftiges Build-System verwendest. Sie behalten alle Objektdateien bei, bis auf die, die Sie gerade kompiliert haben, und kehren dann zu der Stelle zurück, an der Sie aufgehört haben.
Muzer
3
@ T.Sar Nur weil das, was Sie kompilieren, nicht gesund ist, heißt das nicht, dass das Build-System nicht gesund ist. Build-Systeme haben seit jeher Objektdateien zur Wiederverwendung in nachfolgenden Kompilierungen gespeichert. Andererseits kann ich sicherlich viele Softwareprojekte nennen, die weniger vernünftig sind als Linux (das im Allgemeinen ziemlich gut gestaltet ist). Wenn ich zum Beispiel so etwas wie Firefox oder OpenOffice mit 8 parallelen Build-Threads kompiliere, kann ich leicht feststellen, dass es in der Größenordnung von Gigabyte RAM liegt. Es gibt auch viele monolithische Unternehmenssysteme, die von Hunderten von Bibliotheken abhängen.
Muzer
7
@ T.Sar Linux ist vom POV des Compilers nicht wirklich komplex. Eigentlich gibt es kaum C-Programme, die es sind. Was ist mit C ++? Haben Sie jemals versucht, ein Programm mit Eigen oder Boost zu erstellen? Sie wären überrascht, wie viel Speicher der Compiler manchmal mit solchen Programmen belegt - und sie müssen selbst nicht komplex sein.
Ruslan
20

Im Gegensatz zu anderen Antworten schlage ich vor, dass Sie Swap deaktivieren, während Sie dies tun. Während Swap Ihr ​​System auf vorhersehbare Weise am Laufen hält und häufig verwendet wird, um den Durchsatz von Anwendungen, die auf die Festplatte zugreifen, zu erhöhen (indem nicht verwendete Seiten entfernt werden, um Platz für den Festplatten-Cache zu schaffen), hört es sich in diesem Fall so an, als würde Ihr System verlangsamt auf ein unbrauchbares Niveau, weil zu viel aktiv genutzter Speicher zwangsweise ausgetauscht werden muss.

Ich würde empfehlen, Swap während dieser Aufgabe vollständig zu deaktivieren, damit der Killer für nicht genügend Arbeitsspeicher reagiert, sobald der Arbeitsspeicher voll ist.

Alternativlösungen:

  • Erhöhen Sie die Lesegeschwindigkeit von Swap, indem Sie Ihre Swap-Partition in RAID1 einfügen
    • Oder RAID0, wenn Sie sich riskant fühlen, dies jedoch eine große Anzahl laufender Programme zum Absturz bringt, wenn eine Ihrer Festplatten nicht richtig funktioniert.
  • Verringern Sie die Anzahl der gleichzeitigen Build-Jobs ("mehr Kerne = mehr Geschwindigkeit", sagen wir alle, und vergessen Sie dabei, dass der Arbeitsspeicher linear belastet wird).
  • Dies könnte in beide Richtungen gehen, aber versuchen Sie es zswapim Kernel zu aktivieren . Dadurch werden die Seiten komprimiert, bevor sie zum Auslagern gesendet werden. Dies bietet möglicherweise gerade genug Bewegungsspielraum, um den Computer zu beschleunigen. Auf der anderen Seite könnte es durch die zusätzliche Komprimierung / Dekomprimierung zu einem Hindernis werden.
  • Optimierungen ablehnen oder einen anderen Compiler verwenden. Das Optimieren von Code kann manchmal mehrere Gigabyte Speicher beanspruchen. Wenn Sie LTO aktiviert haben, verbrauchen Sie auch in der Verbindungsphase viel RAM. Wenn alles andere fehlschlägt, können Sie versuchen, Ihr Projekt mit einem leichteren Compiler (z. B. tcc) zu kompilieren, was zu einer geringfügigen Beeinträchtigung der Laufzeitleistung des kompilierten Produkts führt. (Dies ist normalerweise akzeptabel, wenn Sie dies für Entwicklungs- / Debugging-Zwecke tun.)
Score_Under
quelle
6
Wenn Sie Swap deaktiviert haben, ist dies das Verhalten von Linux, wenn Ihnen der Arbeitsspeicher ausgeht. Wenn Linux den Killer für zu wenig Arbeitsspeicher nicht aufruft, sondern einfriert, kann dies bedeuten, dass tiefere Probleme mit dem Setup vorliegen. Wenn Swap aktiviert ist, ist das Verhalten natürlich etwas anders.
Score_Under
10
@Akiva Hast du schon mal ohne Tausch probiert? Diese Antwort ist genau richtig. Ich möchte hinzufügen, dass das Ausführen sudo swapoff -aSie retten kann, wenn Sie sich bereits in einem Bind befinden: Es stoppt sofort jede zusätzliche Verwendung des Swap Space, dh der OOM-Killer sollte im nächsten Moment aufgerufen werden und die Maschine in einen funktionsfähigen Zustand versetzen. sudo swapoff -aDies ist auch eine hervorragende Vorsichtsmaßnahme, wenn Sie Speicherlecks beheben oder beispielsweise Firefox kompilieren. Normalerweise ist Swap ein wenig nützlich (z. B. für den Ruhezustand oder das Auslagern von wirklich nicht benötigtem Material), aber wenn Sie tatsächlich Speicher verwenden, sind die Einfrierungen schlimmer.
Jonas Schäfer
2
@Score_Under: Es wird davon ausgegangen, dass separate Swap-Partitionen auf jeder Festplatte wesentlich effizienter sind als ein Swap auf einem md raid0-Gerät. Ich vergesse, wo ich das gelesen habe. Das Linux-RAID-Wiki empfiehlt separate Partitionen gegenüber raid0, sagt jedoch nichts aus, warum es besser ist . Auf jeden Fall ist RAID1 oder RAID10n2 für das Auslagern sinnvoll, insbesondere, wenn Sie nur einige schmutzige, aber sehr kalte Seiten auslagern möchten, um mehr RAM für den Pagecache zu lassen. dh Swap-Performance ist keine große Sache.
Peter Cordes
2
Mein Punkt ist, dass man nach Ihrem Rat diese Programme möglicherweise überhaupt nicht ausführen kann, weil sie ausgetauscht werden müssen. Ein Build, der 100% der Zeit fehlschlägt, ist schlimmer als ein Build, bei dem die Wahrscheinlichkeit, dass das System blockiert wird, bei 50% liegt, nicht wahr?
Dmitry Grigoryev
2
Ohne Swap ist es auf vielen Rechnern unmöglich, große Codestücke zu kompilieren. Warum würden Sie annehmen, dass es die Kompilierung ist, die er opfern möchte?
David Schwartz
14

Sie können den folgenden Befehl (bei Bedarf wiederholt) verwenden, um den Prozess mit dem größten RAM-Speicher Ihres Systems abzubrechen:

ps -eo pid --no-headers --sort=-%mem | head -1 | xargs kill -9

Mit:

  • ps -eo pid --no-headers --sort=-%mem: Zeigt die Prozess-IDs aller laufenden Prozesse an, sortiert nach Speichernutzung
  • head -1: nur die erste Zeile behalten (Prozess mit dem meisten Speicher)
  • xargs kill -9: töte den Prozess

Nach Dmitry's genauem Kommentar editieren:

Dies ist eine schnelle und fehlerhafte Lösung, die ausgeführt werden sollte, wenn keine vertraulichen Aufgaben ausgeführt werden (Aufgaben, die Sie nicht ausführen möchten kill -9).

Gohu
quelle
5
Dies ist viel schlimmer, als den OOM-Killer mit der Situation fertig werden zu lassen. Der OOM-Killer ist viel schlauer. Führen Sie solche Befehle wirklich auf einem Computer mit laufenden Kompilierungen aus?
Dmitry Grigoryev
@DmitryGrigoryev Es ist so klug, manchmal Xorg auf meinem Desktop zu töten. In modernen Kerneln scheint OOMK etwas an Verstand gewonnen zu haben, aber ich würde es nach all dem nicht wirklich vertrauen.
Ruslan
11

Bevor Sie Ihre ressourcenintensiven Befehle ausführen, können Sie auch den Systemaufruf setrlimit (2) verwenden, wahrscheinlich mit dem ulimitBuiltin Ihrer Bash-Shell (oder dem limitBuiltin in zsh), insbesondere mit -vfor RLIMIT_AS. Dann schlägt ein zu großer Verbrauch an virtuellem Adressraum (z. B. mit mmap (2) oder sbrk (2), die von malloc (3) verwendet werden ) fehl (wobei errno (3) ist ENOMEM).

Dann werden sie (dh die hungrigen Prozesse in Ihrer Shell, nachdem Sie getippt haben ulimit) beendet, bevor Ihr System eingefroren wird.

Lesen Sie auch Linux Ate My RAM und erwägen Sie, die Speicherüberbelegung zu deaktivieren (indem Sie den Befehl echo 0 > /proc/sys/vm/overcommit_memory als root ausführen , siehe proc (5) ...).

Basile Starynkevitch
quelle
11

Das passiert mir ziemlich oft, wenn ich Software im Hintergrund kompiliere

In diesem Fall etwas wie "killall -9 make" (oder was auch immer Sie verwenden, um Ihre Kompilierung zu verwalten, wenn nicht make). Dies stoppt den weiteren Kompilierungsvorgang, SIGHUPT alle von ihm aus gestarteten Compiler-Prozesse (was hoffentlich dazu führt, dass sie ebenfalls gestoppt werden) und benötigt als Bonus kein sudo, vorausgesetzt, Sie kompilieren als derselbe Benutzer, den Sie angemeldet haben in als. Und da es die eigentliche Ursache Ihres Problems anstelle Ihres Webbrowsers, einer X-Sitzung oder eines zufälligen Vorgangs beseitigt, beeinträchtigt es nicht, was Sie zu der Zeit auf dem System getan haben.

flauschiger Haufen
quelle
2
Es ist nur eine Schande, dass ich so weit nach unten scrollen musste, um diese Antwort zu finden. Ich hatte gehofft, jemand würde einen Weg vorschlagen, der den Fortschritt bei diesem RAM-Esser aussetzen würde.
TOOGAM
Es ist nichts in der Nähe der Antwort, die OP erwartet, aber es beantwortet die literarische Frage: Meine Mistmaschine wird unbrauchbar, wenn ich darauf baue - hören Sie auf, auf Mistmaschine zu bauen.
9ilsdx 9rvj 0lo
9

Erstelle mehr Swap für dich.

Folgendes wird 8G Swap hinzufügen:

dd if=/dev/zero of=/root/moreswap bs=1M count=8192
mkswap /root/moreswap
swapon /root/moreswap

Es wird immer noch langsam sein (Sie tauschen), aber Sie sollten eigentlich nicht ausgehen. Moderne Versionen von Linux können in Dateien wechseln. Die einzige Verwendung für eine Swap-Partition in diesen Tagen ist der Ruhezustand Ihres Laptops.

William Hay
quelle
1
Ich habe diese Methode als Skript implementiert, eigentlich hier . Sehr nützlich für das Hinzufügen von Swap on the fly.
Sergiy Kolodyazhnyy
7
Ein gewisser Tausch ist im Allgemeinen sinnvoll, aber das Zuweisen großer Mengen lässt die Maschine einfach mehr krachen, bevor der OOM-Killer eingreift und einen Freiwilligen auswählt. Die alte Daumenrolle über "Double Your Ram als Swap" ist längst tot. Persönlich sehe ich keinen Wert darin, mehr als ~ 1 GB Swap insgesamt zuzuweisen.
Criggie
5
Mit ext4, können Sie fallocate -l 8G /root/moreswapstatt ddzu vermeiden , jemals zu tun 8 GB I / O benötigen , während das System Dreschen ist. Dies funktioniert jedoch mit keinem anderen Dateisystem. Auf keinen Fall XFS, bei dem swapon ungeschriebene Bereiche als Lücken erkennt. (Ich denke, diese xfs Mailinglistendiskussion hat nicht geklappt ). Siehe auch swapd, ein Daemon, der im laufenden Betrieb Auslagerungsdateien erstellt / entfernt, um Speicherplatz zu sparen. Auch askubuntu.com/questions/905668/…
Peter Cordes
1
@Criggie "Persönlich sehe ich keinen Wert darin, mehr als ~ 1 GB Swap insgesamt zuzuweisen" - Haben Sie versucht, Firefox zu erstellen?
Dmitry Grigoryev
1
@Akiva Als ich das letzte Mal nachgesehen habe, war die empfohlene Build-Konfiguration 16 GB RAM. Die ausführbare Hauptdatei ( xul.dll) hat eine Größe von ca. 50 MB, ist also etwa zehnmal so schwer wie der Linux-Kernel.
Dmitry Grigoryev
5

Eine Möglichkeit, kurzfristig einen Teil des freien RAM zu erhalten, ist die Verwendung von zram , das eine komprimierte RAM-Disk erstellt und dort austauscht . Bei einer halbwegs vernünftigen CPU ist dies viel schneller als normales Auslagern, und die Komprimierungsraten sind bei vielen modernen RAM-Hogs wie Webbrowsern ziemlich hoch.

Vorausgesetzt, Sie haben zram installiert und konfiguriert, müssen Sie nur noch ausführen

sudo service zramswap start
Dmitry Grigoryev
quelle
Funktioniert das auf allen Dateisystemen wie btrfs?
Akiva
1
@Akiva Zram berührt nie die Festplatte, also würde ich ja sagen;)
Dmitry Grigoryev
3

sudo swapoff -aDeaktiviert den Swap und der Kernel bricht den Prozess mit der höchsten Punktzahl automatisch ab, wenn das System keinen Speicher mehr hat. Ich benutze dies, wenn ich weiß, dass ich etwas RAM-lastiges laufen lasse, das ich lieber töten würde, wenn es außer Kontrolle gerät, als es für immer tauschen und stecken bleiben zu lassen. Verwenden Sie sudo swapon -a, um es anschließend wieder zu aktivieren.

Vielleicht möchten Sie später einen Blick auf Ihre Swap-Einstellungen werfen. Klingt so, als ob sich Ihr Swap auf derselben Festplatte befindet wie die Root-Partition. Dies würde Ihr System verlangsamen, wenn Sie auf Swap klicken. Vermeiden Sie dies, wenn Sie können. Außerdem werden moderne Systeme meiner Meinung nach häufig mit zu viel Swap konfiguriert. 32GiB RAM bedeutet normalerweise, dass standardmäßig 32GiB Swap zugewiesen wird, als ob Sie wirklich 32GiB in Ihren Swap-Bereich einfügen möchten.

sudo
quelle
Oh, ich habe gerade gesehen, dass jemand das oben irgendwo kommentiert hat.
Sudo
3

Eine weitere Möglichkeit besteht darin, den Cache für Speicherseiten mit diesem Befehl freizugeben:

echo 3 | sudo tee /proc/sys/vm/drop_caches

Aus der kernel.org- Dokumentation (Hervorhebung hinzugefügt):

drop_caches

Durch das Schreiben in dieses Feld löscht der Kernel nicht nur saubere Caches, sondern auch wiederherstellbare Plattenobjekte wie Dentries und Inodes. Einmal fallen gelassen, wird ihr Speicher frei .

So geben Sie den Pagecache frei: echo 1> / proc / sys / vm / drop_caches So geben Sie die wiederherstellbaren Plattenobjekte (einschließlich Einträge und Inodes) frei: echo 2> / proc / sys / vm / drop_caches So geben Sie die Plattenobjekte und den Pagecache frei: echo 3> / proc / sys / vm / drop_caches

Dies ist eine zerstörungsfreie Operation und befreit keine schmutzigen Objekte. Um die Anzahl der durch diesen Vorgang freigegebenen Objekte zu erhöhen, kann der Benutzer vor dem Schreiben in / proc / sys / vm / drop_caches eine Synchronisierung ausführen. Dies minimiert die Anzahl der verschmutzten Objekte im System und schafft mehr Kandidaten, die fallengelassen werden müssen.

Sergiy Kolodyazhnyy
quelle
Interessant ... möchten Sie diese Befehlslogik erklären?
Akiva
1
@Akiva im Grunde sagt dies dem Linux-Kernel, den Arbeitsspeicher freizugeben. Damit wird die Ursache nicht beseitigt, die den störenden Prozess zum Erliegen bringt. Die Antwort von Oli ist die Lösung des Problems. Durch das Löschen von Caches wird verhindert, dass auf Ihrem System nicht mehr genügend Arbeitsspeicher zur Verfügung steht. Verhindern Sie daher das Einfrieren. So gewinnen Sie Zeit, um das eigentliche Problem zu ermitteln. Dies ist wahrscheinlich ein bisschen schneller als das
Erstellen
7
Der Cache ist das erste, was Sie tun müssen, wenn Sie den Speicher voll haben. Ich denke, das wird nicht viel helfen. Tatsächlich denke ich nicht, dass dieser Befehl eine praktische Verwendung außerhalb des Debuggens des Kernelverhaltens oder der Optimierung des Festplattenzugriffs hat. Ich würde demütig davon abraten, diesen Befehl auf einem System auszuführen, das mehr Leistung benötigt.
Score_Under
2
@Score_Under - "Der Cache ist das erste, was Sie tun müssen, wenn Sie den Speicher voll haben" - nun, das hängt von Ihrer Einstellung in ab /proc/sys/vm/swappiness. Mit swappiness auf 0 hast du recht. Mit der Standardeinstellung von 60 sind Sie nah dran. Mit ihm auf 200 festgelegt, jedoch wird es die am wenigsten kürzlich verwendete Seiten werden der laufenden Prozesse , die zuerst ... in diesem speziellen Fall runterfallen, dieser Befehl kann nützlich sein. Das Setzen von swappiness auf 0 (oder einen niedrigen Wert, vielleicht 20 oder 30) wäre jedoch ein besserer allgemeiner Ansatz.
Jules
3
@Score_Under Dieser Befehl war nützlich für alte Kernel mit kswapdFehlern (einige Leute haben sogar Cronjobs damit erstellt). Aber du hast recht, ich bezweifle, dass es bei dieser Frage helfen wird.
Dmitry Grigoryev
1

Sie sagten "Kompilieren im Hintergrund". Was machst du im vordergrund Wenn Sie mit Eclipse oder einer anderen ressourcenintensiven IDE entwickeln, überprüfen Sie, ob in der Konsole alles ordnungsgemäß terminiert ist.

In Entwicklungsumgebungen können häufig mehrere Prozesse in der Entwicklung gestartet werden. Diese können auch dann hängen bleiben, wenn Sie nicht mehr an ihnen interessiert sind (im Debugger oder einfach nicht ordnungsgemäß beendet). Wenn der Entwickler nicht aufpasst, können sich im Laufe des Tages Dutzende vergessener Prozesse ansammeln, die mehrere Gigabyte umfassen.

Prüfen Sie, ob alles, was in IDE beendet werden soll, beendet ist.

h22
quelle