Kann macOS daran gehindert werden, eine App anzuhalten, wenn dem System der Anwendungsspeicher ausgeht?

Manchmal führe ich Distributed-Computing-Projekte im BOINC Manager aus, während mein iMac im Leerlauf ist. Häufig wird ein Dialogfeld zum Beenden erzwingen mit der Meldung „Ihr System hat keinen Anwendungsspeicher mehr“ angezeigt. In diesem Fall werden alle geöffneten Anwendungen außer dem Finder angehalten und müssen einzeln manuell über das Dialogfeld neu gestartet werden.

Ich könnte die Menge an RAM reduzieren, die BOINC Manager verwenden kann, aber ich würde es vorziehen, BOINC-Projekten so viel RAM wie möglich zuzuweisen. Wie kann ich verhindern, dass macOS BOINC (oder eine andere App oder Apps) anhält, wenn dem System der RAM ausgeht?

Update : Dieses Problem scheint durch ein aktuelles BOINC-Update behoben worden zu sein.

Mit virtuellem Speicher - ist nicht das Programm an der schlechten Speicherverwaltung schuld und nicht das Betriebssystem? Wenn Sie diese Warnung sehen – was zeigt der Aktivitätsmonitor für Speicherbelastung an? (grün / gelb / rot - oder besser eine Fenstererfassung der Speicherdetails wäre hilfreich, um Ihnen weitere Ratschläge zu geben).

Antworten (1)

Sie möchten höchstwahrscheinlich nicht verhindern, dass macOS Apps anhält, wenn dem System der Arbeitsspeicher ausgeht, wenn Sie wissen, dass die einzige Alternative darin besteht, das Programm zu beenden. Dh das Programm jetzt und hier anhalten, ohne seine Daten zu speichern oder ähnliches.

Sie müssen die angehaltenen Programme jedoch nicht neu starten, wie in "Programm schließen und neu starten". Stattdessen können Sie das Programm tatsächlich wieder anhalten, wenn Sie über ausreichend freien Speicher auf dem System verfügen. Sie können dies vom Terminal aus tun, indem Sie Folgendes ausführen:

kill -CONT <pid>

wo sollte durch die Prozess-ID des Prozesses ersetzt werden, den Sie fortsetzen möchten.

Sie können die Prozess-ID mithilfe des Aktivitätsmonitors oder des Befehls „ps“ im Terminal finden (in diesem Fall suchen Sie nach Prozessen mit dem Status T, da dies die angehaltenen/gestoppten sind).

Eine einfache Möglichkeit, die Pausierung fortzusetzen und die ID auf einmal zu finden, ist:

kill -CONT `pgrep myprogram`

wobei myprogram der Name des Programms ist, das Sie wieder anhalten möchten.

Der zweite Teil Ihrer Frage, in dem Sie das ideale Szenario beschreiben, ist mit einem Standardprogramm nur sehr schwer zu erreichen. Im Allgemeinen können Programme Speicher vom Betriebssystem anfordern, aber das Betriebssystem kann ihn danach nicht zurückfordern. Es ist möglich, erfordert aber sehr spezialisierte Programme, was im Allgemeinen nicht der Fall ist.

Das bedeutet, sobald macOS Ihrem Programm beispielsweise 1 GB RAM gewährt hat, kann das Betriebssystem es nicht einfach zurücknehmen, wenn andere Programme mehr Speicher benötigen. Wenn Sie Programmen Speicher entziehen, die nicht speziell dafür entwickelt wurden, stürzen sie effektiv ab, sobald sie versuchen, den verlorenen Speicher zu verwenden.