512 MB Speicher reichen aus wenn man String Deduplication benutzt
-
Ich habe momentan 13.2.1 mit folgenden JVM parametern laufen (Java 1.8.0_191)
-Xms512m -Xmx512m -XX:+UseG1GC -XX:+UseStringDeduplicationUnd das läuft sehr schnell und zufriedenstellend.
Selbst nach 2 Tagen runtime wird im Schnitt nur ca. 380 MB an Hauptspeicher benötigt.Das wäre doch eine gute Möglichkeit die exe mit genau diesen Parametern zu bauen damit auch auf relativ schwachbrüstigen Rechnern die Anwendung gut läuft.
Der Overhead für die Deduplizerung der Strings ist wirklich relativ gering (und das auf einem 7-8 jahre alten i5 chip). -
@DasMiracle ja 512MB reichen als minimal Förderung wenn die Datenbank benutzt wird. Du solltest aber nicht vergessen das es noch Nutzer mit deutlich langsameren CPU gibt. Je mehr Speicher die App hat desto besser läuft sie. Und die 1GB sind ein Richtwert mit dem man gut arbeiten kann. 13.3 wird mit 1GB wieder so schnell sein wie 13.06
-
Hallo DerReisende77,
aus meiner Sicht gibt es hier zwei Paar verschiedene Schuhe. Allerdings kenn ich die Speicherverwaltung von Java nicht wirklich und irre mich daher vielleicht. Ich werfe meinen Gedankengang trotzdem mal in den Raum.
Zum einen könnte man die Exe, von der DasMiracle spricht, zusätzlich anbieten, also extra für Rechner mit wenig Speicher. One size fits all ist halt nicht immer machbar.
Zum anderen könnte die Option UseStringDeduplication - wenn sie denn tatsächlich so wenig Leistung kostet, wie DasMiracle schreibt - für sich alleine genommen (also ohne die 512m Einschränkung) auch für Rechner mit mittlerem Speicherausbau interessant sein, insbesondere wenn man dort gleichzeitig mehrere andere Anwendungen offen hat. Auf leistungsfähigen Rechnern würde es wohl nicht stören und auf anderen könnte es nützen. Wäre vielleicht einen Versuch wert.
herbivore
-
@herbivore ganz so unproblematisch ist dedup nicht und es kostet schon merklich Leistung. Daher nutze ich es zum Beispiel auch nicht komplett intern in der App. Die einbußen zum Beispiel beim Laden der Filmliste liegen ungefähr bei 600%.
Eine weiter Konfiguration anzubieten sehe ich nicht als sinnvoll an. Die bereit gestellte App funktioniert und hat eine halbwegs nachvollziehbare Konfiguration. Noch eine zusätzliche erhöht einfach den Aufwand und davon hält ich nichts. Und jeder kann ja mit den Parametern spielen und tunen was das Zeug hergibt. -
Also 600% “Verschlechterung” beim Laden der Filmliste kann ich erst mal subjektiv nicht bestätigen. Aber ich werde das mal testen.
Mit -XX:+PrintStringDeduplicationStatistics kann man sich übrigens nette Statistiken über die Deduplizerungsraten und auch den CPU Overhead anschauen, der war eigentlich im Vergleich zu den GC Zeiten relativ gering.
Ich mache mal ein paar Tests und poste die dann mal -
@DasMiracle ich rede auch von programmierter Nutzung innerhalb des Programms beim lesen der Filmliste zB via String.intern().
Und die Statistiken sind mir bekannt.
Wie gesagt jeder kann die Parameter tunen wie er es für sein system für richtig hält. Das ist jedem frei gestellt.