Ich war über all die JVM-Argumente in JRE 6 [Java VM Options] und sah vor kurzem der Lektüre dieses:JVM -XX: + StringCache Argument?
-XX: + StringCache: Ermöglicht Caching von häufig zugeordneten Strings. Jetzt
Ich war immer unter dem Eindruck, dass Java einen Pool von Internierung gehalten (richtigen Wort?) Strings und wenn sie mit Literalen etwas wie String-Verkettung tut es nicht neue Objekte zu schaffen, sondern sie aus diesem Pool zu ziehen. Hat jemand dieses Argument jemals benutzt oder kann es erklären, warum es nötig wäre?
EDIT: Ich habe versucht, einen Benchmark auszuführen, um zu sehen, ob dieses Argument eine Wirkung hatte und konnte nicht die Sun JVM, um es zu erkennen. Dies war mit:
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode,
sharing)
Also ich bin mir nicht sicher, ob dieses Argument überhaupt funktioniert.
denke ich, die meisten String-Operationen Internierung nicht verwenden. Das Internieren wird vielmehr von der JVM verwendet, um Zeichenfolgenwerte aus den Klassendateien zu speichern und übermäßigen Speicherverbrauch aufgrund von Duplikaten zu vermeiden. – akarnokd
Große Frage. Die Sonnendokumente sind hier sehr unklar. Dokumente zum Internieren sind jedoch klar, dass es nur unter bestimmten Umständen funktioniert (String-Literale). Vielleicht wendet die JVM arg dieses Verhalten unter einer größeren Anzahl von Umständen an. –
Ich kann diese Option in der OpenJDK-Quelle nicht finden. Was denkst du, das heißt? –