2013-04-09 20 views
8

Uygulamanın oluşturulması Yığında çok fazla ip olduğunu öğrendim.Java GC dizgileri için ayarlamalar

Benim durumumda, dizeler yığın üzerinde oluşturuluyor ve iç içe değil ve değişmezler.

Uygulamadaki dizelerin sayısı çok yüksek olduğunda izlenecek belirli bir GC ayarlama teknikleri var mı?

GC ayarları -XX ayarlarına rastladım: + UseCompressedStrings veya -XX + UseStringCache ancak bunun yardımcı olacağından emin değilim. Herhangi bir vücut bu ayarları denediniz mi?

java versiyonu "1.6.0_22"
Java (TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot (TM) 64-bit sunucu VM (17.1-B03, karışık mod kurmak)

-XX:+UseCompressedStrings ilgili
+2

Deneyimlerime göre, GC ile uğraşmayın, genellikle –

+1

olduğundan yeterince iyi bir iş çıkarır En önemsiz şey yapmamanızdır - örneğin, tekrar tekrar bir dizgeyi "kes" "jeton" ve "dinlenme". Bu inanılmaz derecede sık yapılır ve bir uygulamayı dizlerine getirebilir. –

cevap

8

, bu soruya bir göz sahip olmalıdır: Support for Compressed Strings being Dropped in HotSpot JVM?

Ve -XX+UseStringCache ilgili, bir göz: Btw JVM -XX:+StringCache argument?

. Java 7, dahili Dizeleri kullanırken String önbelleğinin ayarlanmasına izin veren güzel özelliklere sahiptir. Bkz. -XX:+PrintSTringTableStatistics ve -XX:StringTableSize=n. Bu şekilde String önbellek boyutunu optimize edebilirsiniz.

+1

Açıklamak gerekirse: 'PrintStringTableStatistics', program sona erdiğinde dizgi havuzu kullanımınızın bir raporunu yazdırır. Daha fazla bilgi için [Java 6, 7 ve 8 - string havuzu *] 'da * * String.intern'e bakın. [Http://java-performance.info/string-intern-in-java-6-7-8/) Mikhail Vorontsov] (http://java-performance.info/author/Mike/). –