JVM: Speicher wieder für OS freigeben?

Status
Nicht offen für weitere Antworten.

Lyxic

Mitglied
Hallo,

ich hoffe mal, das ich hier im richtigen Unterforum gelandet bin :)

Ich beschreibe mal mein Problem:

Wir haben hier eine gewachsene Java Applikation mit der mitlerweile ca. 100 User arbeiten. Ursprünglich war die Applikation für 30 User geplant. Wohl auch aus diesem Grund wurde während der Planung kein Applikation Server für die Software vorgesehen, sondern eine Architektur gewählt, bei der sich die Clients auf einem zentralen Linux Server anmelden und jeweils eine eigene JVM starten in der die Applikation läuft.
Unser konkretes Problem ist jetzt der RAM Verbrauch. Das RAM ist voll ausgelastet und weil auch das nicht reicht, swappt der Server munter darauf los. (4-6GB im Schnitt)
Da die Clients ab und an sehr große Datenmengen aus einer DB abfragen, ist als maximale Heap Größe 512MB gesetzt. Der Server selbst besitzt 8GB Ram(mehr geht auf der Hardware nicht und neue Hardware scheidet vorerst aus).
Das Design der Applikation ist sicherlich nicht optimal, aber daran werde ich nichts ändern können. Mich beschäftigt im Moment vielmehr die Frage, wie ich den RAM Verbrauch minimieren kann. Die JVM scheint den einmal allokierten Speicher nicht wieder für das OS freizugeben. Gibt es Möglichkeiten dies zu ändern?

Ich kann zwar an diversen Parameter des GC drehen, doch wenn der so "intern" (also in der JVM) freie Speicher nicht wieder von der JVM an das OS freigegeben wird, dann würde das ja vermutlich eh nichts bringen ...
Denn dann fehlt dieser Speicher weiterhin für andere Clients...

Gruß Lyxic
 
M

maki

Gast
MIr fällt keine Lösung ausser einem redesign ein, aber aus Neugier, wie sehen denn deine XMS und XMX Parameter aus?
 
T

tuxedo

Gast
Lyxic hat gesagt.:
sondern eine Architektur gewählt, bei der sich die Clients auf einem zentralen Linux Server anmelden und jeweils eine eigene JVM starten in der die Applikation läuft.

Wie sieht das denn aus? Loggen die sich via VNC/RDP am Linux-Rechner ein?
Wenn ja: Ich will ja nicht stänkern, aber das Design wäre ja schon bei nur 5 Usern "schlecht".

Warum können die User das Programm nicht bei sich lokal starten und über's Netzwerk verbindung zur DB aufnehmen? Oder hängen da noch andere Ressourcen dran?
 

Lyxic

Mitglied
Also,

@maki:

xms steht auf 64 und xmx auf 512 MB. Was das redesign angeht - ich bin in der Vergangenheit schon fast gekreuzigt worden als ich das angesprochen habe ;)

Weniger geht leider nicht, da es halt vor kommen kann, dass sich User immense Datenmengen aus der DB saugen und sonst laufen wir halt in eine OutOfMemory...


@tfa:

Steht im Moment nicht zur Diskussion...


@alex0801:

Die Clients loggen sich via SSH auf dem Server ein. (auch aus weit entfernten Aussenstellen mit wenig Bandbreite.) Da die GUI Curses nutzt gibt es da auch keine Probleme - im Gegenteil.

Dass das Design fragwürdig ist, will ich garnicht leugnen. Das ist allerdings nicht auf meinen Mist gewachsen. Ich administriere nur die Server, ich bin kein Entwickler :)

Das Programm lokal zu starten ist aufgrund der Bandbreite nicht möglich. Viele (die meisten) Benutzer sind nur über schmalbandige Leitungen mit dem Server verbunden. Abfragen die mehrere Millionen Rows in der Datenbank anfassen und dann immer noch einige tausend zurückliefern kann man nicht vernüftig über 128k Leitungen übertragen wenn gleichzeitig mehrer Leute über solch eine Leitung arbeiten sollen.

Gruß Lyxic
 
T

tuxedo

Gast
Hmm, afaik hält die JVM den einmal reservierten Speicher fest und gibt ihn (nicht so schnell) wieder her. Ich bin mir recht sicher dass es da keinen vernünftigen Weg gibt den Speicher wieder herzugeben, bzw. damit dynamischer zu verfahren. Da die "Gui" ja recht einfach zu sein schein, wäre es sicher machbar die Anwendung auf "verteilt" umzustricken, so dass nur noch eine VM läuft. Nebenbei sollte man nicht unterschätzen was eine vernünftige komprimierung anstellen kann. Mein jPMdbc Treiber schafft bei der Übertragung rund Faktor 10 bei der Komprimierung (https://jpmdbc.dev.java.net/). Aber 128k sind dennoch etwas wenig wenn mehrere dran hocken.

Zum Thema steinigen: Dich sollte man nicht steinigen. Du kannst ja nix dazu. Aber der, der das verbrochen hat, und auch noch Geld dafür bekommen hat, den sollte man weiß weg, auf eine einsame, verregnete und düstere Insel schicken, wo es kein Internet und keine Rechner gibt. Soweit weg, dass er sowas nicht nochmal verbrechen kann.

Man, wenn ich nur dran denke... 30 mal (soviel war ja geplant) die JVM öffnen... Was das für einen "Overhead" erzeugt...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Speicherverwaltung bzw. Speicher wieder frei geben?! Allgemeine Java-Themen 8
M Variablen Speicher wieder freigeben ? Allgemeine Java-Themen 9
C Über C/C++ (JNI) angeforderten Speicher wieder frei geben Allgemeine Java-Themen 3
C Virtueller Speicher Allgemeine Java-Themen 36
sascha-sphw Auf GoPro Speicher zugreifen Allgemeine Java-Themen 10
TheJavaKid Mit Java die Festplatte mit dem meisten freien Speicher finden Allgemeine Java-Themen 7
J Strings int textdokumente speicher Allgemeine Java-Themen 3
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
Thallius Wie mache ich eine Java App mit Icon startbar die mehr Heap Speicher braucht? Allgemeine Java-Themen 3
P Große Datenstruktur im Speicher halten Allgemeine Java-Themen 13
H Frage wegen Heap-Speicher Allgemeine Java-Themen 2
M Speicher der VM Allgemeine Java-Themen 4
W PDFBox "Nicht genügend Speicher" Allgemeine Java-Themen 2
S Speicher-Problem Allgemeine Java-Themen 4
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
V Input/Output BufferedI/OStream leert den Speicher Allgemeine Java-Themen 7
G Speicher erhöhen Allgemeine Java-Themen 10
R Programm frisst 'Virtuellen Speicher' wie PacMan Allgemeine Java-Themen 4
P Java Anwendung mehr Speicher zur Verfügung stellen?? Allgemeine Java-Themen 3
A 2D-Grafik 2MB jpg wird zu 300MB im speicher (fehler) Allgemeine Java-Themen 8
D Speicher beim Start zuweisen Allgemeine Java-Themen 10
S Bei Sortierung Speicher zu gering? Allgemeine Java-Themen 8
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
S Jar Datei mit mehr Speicher starten Allgemeine Java-Themen 2
S JAR Datei, mehr Speicher bereitstellen Allgemeine Java-Themen 5
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
E Speicher frei machen (List) Allgemeine Java-Themen 9
J Speicher Probleme vorbeugen Allgemeine Java-Themen 8
C Laden / Speicher Allgemeine Java-Themen 8
R Eigener Assoziativ-Speicher Allgemeine Java-Themen 7
R Assoziativer Speicher welche Unterschiede? Allgemeine Java-Themen 5
S Zugesicherter Speicher der jvm nach Programmstart erhöhen Allgemeine Java-Themen 6
G FIFO Speicher nachbilden Allgemeine Java-Themen 2
G restlichen freien Speicher ermitteln? Allgemeine Java-Themen 3
J Wieviel Speicher maximal? Allgemeine Java-Themen 14
T Sortierter assoziativer Speicher mit Filter Allgemeine Java-Themen 4
M Heap Speicher voll bei spezieller Resize Methode Allgemeine Java-Themen 5
R Gibt es eine JVM, die besser mit dem Speicher umgeht? Allgemeine Java-Themen 7
F OutOfMemoryError: Java heap space - Speicher verändern Allgemeine Java-Themen 8
O Datei im Speicher halten Allgemeine Java-Themen 4
C Speicher Problem Allgemeine Java-Themen 3
S TreeSet benötigt zu viel Speicher Allgemeine Java-Themen 5
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
L Nutzt Java bei Start der VM übermäßig viel Speicher? Allgemeine Java-Themen 3
F CPU auslastung wenn Speicher mit -Xmx erhöht Allgemeine Java-Themen 4
S Auslagerungsdatei (Speicher) werde voll Allgemeine Java-Themen 2
G Panel mit vielen Komponenten verbraucht viel Speicher Allgemeine Java-Themen 3
S Speicher Allgemeine Java-Themen 2
m@nu doppelte daten im speicher? Allgemeine Java-Themen 2
G Speicher Allgemeine Java-Themen 3
H wie viel speicher braucht eigentlich ein array? Allgemeine Java-Themen 2
A Speicher/Anzeige Problem in JTable Allgemeine Java-Themen 2
D Speicher der VM für ausführbares Jarfile erhöhen Allgemeine Java-Themen 4
D Eine geladene Klasse aus dem Speicher holen? Allgemeine Java-Themen 9
J in file schreiben frisst den speicher Allgemeine Java-Themen 5
P benötigter Speicher für Objekt Allgemeine Java-Themen 5
D Wieviel Speicher kann die VM verwalten? Allgemeine Java-Themen 18
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
B Kostet das speichern von Variablen zusätzlichen speicher? Allgemeine Java-Themen 2
T Speicher für die VM ändern Allgemeine Java-Themen 17
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
H Wie Cpu- und Speicher- Auslastung in Java auslesen Allgemeine Java-Themen 4
F Verfügbaren Heap-Speicher setzen Allgemeine Java-Themen 2
C RAM Speicher in Datei auslagern (Java Swapping) Allgemeine Java-Themen 4
N Speicher Problem bei grossem Heap Allgemeine Java-Themen 15
S Speicher reservieren Allgemeine Java-Themen 5
R nichtmehr benötigtes BufferedImages aus dem Speicher entfern Allgemeine Java-Themen 4
Oneixee5 Oracle, wieder mal ... Allgemeine Java-Themen 12
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
W Vererbung Generics - mal wieder die verhaßte Rückwärtskompatibilität Allgemeine Java-Themen 2
V Scheinbar zufällig hin und wieder: Can't create an ImageOutputStream! Allgemeine Java-Themen 8
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
Thallius Dateien Zippen und wieder heraus lesen? Allgemeine Java-Themen 4
S Zahlen aus (String mit zahlen) immer wieder neu auslesen Allgemeine Java-Themen 5
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
iB0T "goto" Befehl aus Batch in Java und Variablen wert immer wieder neu setzen Allgemeine Java-Themen 4
M Regex... mal wieder Allgemeine Java-Themen 3
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
C Datentypen int in bytes zerlegen und wieder zusammen setzen Allgemeine Java-Themen 13
S Strings gehen "kaputt" wenn ich in CVS ein und wieder auschecke. Allgemeine Java-Themen 2
F Wieder mal die eBay API Allgemeine Java-Themen 3
T JConsole: Klassen werden geladen aber nicht wieder entladen Allgemeine Java-Themen 3
S Thread vorübergehend stilllegen und wieder aufwecken Allgemeine Java-Themen 18
data89 A-Stern: fährt immer wieder vor die Wand! - Hilfeeee Allgemeine Java-Themen 7
L Thread kurz unterbrechen und wieder starten Allgemeine Java-Themen 5
L Applet immer wieder neu laden - Problem Allgemeine Java-Themen 25
T RegEx, wieder einmal ... :-( Allgemeine Java-Themen 19
S Wieso stehen in der API immer wieder abstrakte Methoden ? Allgemeine Java-Themen 7
C Aus XML ein DOM Objekt und wieder zurück Allgemeine Java-Themen 2
M wieder mal applet probleme Allgemeine Java-Themen 17
A HTML-Seite wieder schließen Allgemeine Java-Themen 2
W Wieder einmal: PNG ausdrucken Allgemeine Java-Themen 3
S GUI komplett schließen und wieder Neu laden? Allgemeine Java-Themen 4
C Bild in .txt speichern und wieder als Bild speichern Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben