Hallo mal wieder, werte Java Gemeinde,
habe eine neue Kopfnuss, die zu knacken ihr mir vielleicht helfen könnt. Abhängig von der Größe eines vom User zu wählenden Datensatzes (im Bereich kb - mehrere GB) wird zwischen einer In-Memory Strategie und einer Festplatten Caching Strategie gewählt. Damit zerfallen die möglichen Aufgaben erstmal in zwei Klassen:
1) Diejenigen, die auf jeden Fall mit den Resourcen klarkommen.
2) Diejenigen, die auf Kosten der Performance mit Festplatten Cache arbeiten.
Kopfzerbrechen bereiten mir die Datensätze im Grenzbereich dieser Kategorien. Auf einem schnellen Multicore Prozessor räumt die GC so schnell auf, dass stetig genug Speicherplatz da ist, während auf einem langsameren bereits der Memory Error auftritt.
- Wie schätzt ihr den zu erwartenden Resourcenverbrauch im Vorfeld sicher ab, um eine der beiden Strategien zu wählen?
- Wie könnte man eine Fallbacklösung gestalten, die sofern sich mit Lösung 1) ein Memory Error so langsam ankündigt abbricht, GC ausführt, den User informiert und Lösung 2) verwendet? Gibt es Erfahrungen mit einem sinnvollen Schwellwert für die Speicherbelegung, ab dem dies geschehen sollte?
- Wie rettet man die JVM, falls es mal mit dem Abbruch nicht mehr klappt?
- Welche Werkzeuge kennt ihr, die einen bei dieser Aufgabe unterstützen?
EDIT:
- Wie könnte man die Aufgabe kurz pausieren, die GC anweisen, zu tun was gerade geht und evtl. erstmal darauf zu warten, andere Threads abzuarbeiten und es dann erst nochmal zu versuchen.
EDIT2:
Nur um diesbezüglichen Unklarheiten vorzubeugen. Es geht nicht um MemoryLeaks sondern um Prozesse, die temporär hohe Spitzen im Speicherverbrauch haben und danach wieder aufgeräumt werden dürfen.
Mfg,
Bergtroll
habe eine neue Kopfnuss, die zu knacken ihr mir vielleicht helfen könnt. Abhängig von der Größe eines vom User zu wählenden Datensatzes (im Bereich kb - mehrere GB) wird zwischen einer In-Memory Strategie und einer Festplatten Caching Strategie gewählt. Damit zerfallen die möglichen Aufgaben erstmal in zwei Klassen:
1) Diejenigen, die auf jeden Fall mit den Resourcen klarkommen.
2) Diejenigen, die auf Kosten der Performance mit Festplatten Cache arbeiten.
Kopfzerbrechen bereiten mir die Datensätze im Grenzbereich dieser Kategorien. Auf einem schnellen Multicore Prozessor räumt die GC so schnell auf, dass stetig genug Speicherplatz da ist, während auf einem langsameren bereits der Memory Error auftritt.
- Wie schätzt ihr den zu erwartenden Resourcenverbrauch im Vorfeld sicher ab, um eine der beiden Strategien zu wählen?
- Wie könnte man eine Fallbacklösung gestalten, die sofern sich mit Lösung 1) ein Memory Error so langsam ankündigt abbricht, GC ausführt, den User informiert und Lösung 2) verwendet? Gibt es Erfahrungen mit einem sinnvollen Schwellwert für die Speicherbelegung, ab dem dies geschehen sollte?
- Wie rettet man die JVM, falls es mal mit dem Abbruch nicht mehr klappt?
- Welche Werkzeuge kennt ihr, die einen bei dieser Aufgabe unterstützen?
EDIT:
- Wie könnte man die Aufgabe kurz pausieren, die GC anweisen, zu tun was gerade geht und evtl. erstmal darauf zu warten, andere Threads abzuarbeiten und es dann erst nochmal zu versuchen.
EDIT2:
Nur um diesbezüglichen Unklarheiten vorzubeugen. Es geht nicht um MemoryLeaks sondern um Prozesse, die temporär hohe Spitzen im Speicherverbrauch haben und danach wieder aufgeräumt werden dürfen.
Mfg,
Bergtroll
Zuletzt bearbeitet: