Beschränken Sie die Übernahme des RAM durch Eclipse

Beschränken Sie die Übernahme des RAM durch Eclipse

Ich verwende Eclipse in Ubuntu 14.04 für wissenschaftliche Zwecke und mein Code verbraucht viel RAM. Wenn ich meinen Code in Eclipse ausführe, sehe ich im Systemmonitor, dass die RAM-Nutzung auf fast 100 % steigt und gleichzeitig das Betriebssystem sehr langsam reagiert (zum Beispiel dauert das Öffnen eines Terminals mehr als eine Minute). Gibt es eine Möglichkeit, die von Eclipse verwendete RAM-Menge zu begrenzen, damit das Betriebssystem immer reagiert?

Danke!

Antwort1

Wenn Sie eine Anwendung in Eclipse ausführen, wird im Betriebssystem ein separater Thread erstellt. Die RAM-Nutzung dieses Threads kann von Eclipse nicht gesteuert werden.

Eine Möglichkeit, Systemabstürze zu vermeiden, besteht darin, die Größe der Swap-Partition zu erhöhen. Auch in diesem Fall wird das System sehr träge, stürzt aber nicht ab.

Es gibt andere Möglichkeiten, die RAM-Nutzung einer Anwendung zu kontrollieren, z. B. das Programm zu beenden, wenn die Nutzung einen bestimmten Wert überschreitet. Wenn Sie solche harten Grenzen für die Speichernutzung festlegen, kann es zu unvorhersehbarem Verhalten/Abstürzen kommen. Weitere Informationen zur Begrenzung der RAM-Nutzung finden Sie unter den folgenden Links.

https://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process

https://stackoverflow.com/questions/26860822/wie-begrenzt-man-den-Speicherverbrauch-für-einen-einzelnen-Linux-Prozess-und-beendet-man-den-Prozess-nicht

Ich würde empfehlen, Ihren Code zu optimieren, damit er weniger RAM verbraucht, oder sich eine Möglichkeit auszudenken, die Daten auf die Festplatte zu übertragen und sie bei Bedarf zu lesen, anstatt sie im RAM zu behalten. Noch besser ist es, den RAM zu erhöhen!

Antwort2

Hierist ein Perl-Skript für genau dieses Problem.

EINFÜHRUNG

Das Timeout-Skript ist ein Ressourcenüberwachungsprogramm zur Begrenzung der Zeit und des Speicherverbrauchs von Blackbox-Prozessen unter Linux. Es führt einen Befehl aus, den Sie in der Befehlszeile angeben, und überwacht dessen Speicher- und Zeitverbrauch. Wenn der Prozess die Grenzwerte überschreitet, wird er unterbrochen und der Benutzer wird mit der voreingestellten Meldung benachrichtigt.

Das Killer-Feature dieses Skripts (und eigentlich der Grund für sein Erscheinen) ist, dass es nicht nur den direkt erzeugten Prozess überwacht, sondern auch seine später gegabelten Kinder im Auge behält. Sie können wählen, ob der Umfang der überwachten Prozesse durch die Prozessgruppe oder den Prozessbaum eingeschränkt wird.

Quelle

verwandte Informationen