Profiling der Anwendung Ich habe herausgefunden, dass es viele Strings auf Heap gibt.
In meiner Situation werden Zeichenfolgen auf Heap erstellt und nicht interniert, und sie sind keine Literale.
Gibt es bestimmte GC-Optimierungstechniken, wenn die Anzahl der Strings in der Anwendung sehr hoch ist?
Ich bin über die GC-Einstellungen gestolpert -XX: + UseCompressedStrings oder -XX + UseStringCache , aber ich bin mir nicht sicher, ob das hilft. Hat irgendjemand diese Einstellungen versucht?
Java Version "1.6.0_22"
Java (TM) SE Laufzeitumgebung (Build 1.6.0_22-b04)
Java HotSpot (TM) 64-Bit-Server-VM (Build 17.1-b03, gemischter Modus)
Bezogen auf -XX:+UseCompressedStrings
sollten Sie sich diese Frage ansehen: Unterstützung für komprimierte Zeichenfolgen, die in HotSpot JVM gelöscht werden?
Und, in Bezug auf -XX+UseStringCache
, schauen Sie sich an: JVM -XX: + StringCache Argument?
Übrigens. Java 7 enthält nützliche Funktionen, mit denen Sie den String-Cache optimieren können, wenn Sie die intern gespeicherten Strings verwenden. Siehe -XX:+PrintSTringTableStatistics
und -XX:StringTableSize=n
. Auf diese Weise können Sie die String-Cache-Größe optimieren.
Tags und Links string java memory garbage-collection memory-management