staging.inyokaproject.org

Java-Prozess limitieren

Status: Ungelöst | Ubuntu-Version: Server 16.10 (Yakkety Yak)
Antworten |

Ishidres

Avatar von Ishidres

Anmeldungsdatum:
30. März 2015

Beiträge: Zähle...

Hallo,

man kann ja mit

java -jar -Xmx1024 -Xms512 app.jar

das Maximum/Minimum der RAM-Nutzung festlegen.

Nur leider schafft es meine Java-Anwendung irgendwie mehr als das Limit zu verbrauchen.

Meine Frage nun:

Wie kann ich einen einzelnen Prozess, bzw. beim Starten eines Programmes, die maximale RAM-Nutzung festlegen, wenn möglich ohne das -Xmx1024, wie bei Java?

Ich hab schon ein wenig gegoogelt und bin über den Befehl ulimit gestoßen, verstehe aber noch nicht ganz, wie man ihn anwendet. 😮

Viele Grüße, Ishidres

Moderiert von sebix:

Dieses Thema ist verschoben worden. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“)!

Nuron

Anmeldungsdatum:
16. November 2016

Beiträge: Zähle...

Hey

Das ulimit kenne ich nicht.

Wieso Java mehr verbraucht weiß ich auch nicht... Vielleicht einen Prozess zweimal gestartet? Gib im Termainal mal "top" ein! Da siehst du genau, welcher Prozess wie viel RAM verbraucht!

Wenn du das ganze grafisch schöner haben möchtest Gib mal

1
sudo apt-get install htop

Ein! Ist im Grunde das selbe wie top nur schöner 😉

Ach ja... Wenn du einen Prozess immer mal wieder starten möchtest, schreib dir doch einfach schnell eine .sh Datei! In deinem Falle:

1
2
nano Start.sh
Java -jar -Xmx1024 -Xms512 app.jar

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Ishidres schrieb:

java -jar -Xmx1024 -Xms512 app.jar

das Maximum/Minimum der RAM-Nutzung festlegen.

Das stimmt nicht. Du limitierst die Heap-Größe! Die JVM benötigt aber auch noch Speicher für Programmcode der JVM, geladene Bibliotheken etc.

Nur leider schafft es meine Java-Anwendung irgendwie mehr als das Limit zu verbrauchen.

Kein Wunder, s.o. Nach was hast Du denn genau geschaut bzw. wie hast Du den Speicherverbrauch ermittelt?

Wie kann ich einen einzelnen Prozess, bzw. beim Starten eines Programmes, die maximale RAM-Nutzung festlegen, wenn möglich ohne das -Xmx1024, wie bei Java?

Das ist im Fall der JVM eine schlechte Idee, weil sie a) einen eigenen Mechanismus hat (nämlich -Xmx und andere Optionen) und b) mit einem ulimit o.ä. von falschen Voraussetzungen ausgeht. Du verwendest besser einen kleineren Wert für -Xmx.

Antworten |