Hallo Forum,
die Frage stellt sich für mich deshalb, da mein Proggi große Datenmengen im RAM verwaltet, und zwar in Form von Datensätzen aus jeweils mehreren Strings.
Derzeit speichert die Dataset getaufte Klasse Leerstrings als 'null', wovon ich mir seinerzeit wohl RAM-Einsparung versprochen hatte, was aber mit allerhand if-Statements und damit tendenziellen Performace-Einbußen verbunden ist.
Als ich nun durch den alten Quellcode streifte, leuchtete mir auf, dass obige Maßnahme nur dann Sinn hat, falls die Java VM intern für 'null' keine Referenz im RAM speichert. Denn sonst könnte man genauso einfach eine...
...Konstante etablieren und bei 'isEmpty()' darauf verwesen, statt 'null' zu speichern.
Daraus dann (sorry für die Länge) ergibt sich die zweite Frage: Ist eine solche Konstante dann überhaupt sinnvoll oder hält etwa die VM für den "Sonderfall" Leerstring eine einzige gesharte Instanz im RAM?
Vielen Dank!
die Frage stellt sich für mich deshalb, da mein Proggi große Datenmengen im RAM verwaltet, und zwar in Form von Datensätzen aus jeweils mehreren Strings.
Derzeit speichert die Dataset getaufte Klasse Leerstrings als 'null', wovon ich mir seinerzeit wohl RAM-Einsparung versprochen hatte, was aber mit allerhand if-Statements und damit tendenziellen Performace-Einbußen verbunden ist.
Als ich nun durch den alten Quellcode streifte, leuchtete mir auf, dass obige Maßnahme nur dann Sinn hat, falls die Java VM intern für 'null' keine Referenz im RAM speichert. Denn sonst könnte man genauso einfach eine...
Java:
private static final String EMPTY = ""
...Konstante etablieren und bei 'isEmpty()' darauf verwesen, statt 'null' zu speichern.
Daraus dann (sorry für die Länge) ergibt sich die zweite Frage: Ist eine solche Konstante dann überhaupt sinnvoll oder hält etwa die VM für den "Sonderfall" Leerstring eine einzige gesharte Instanz im RAM?
Vielen Dank!
Zuletzt bearbeitet: