2014-02-25 8 views
11

Wir versuchen, die Leistung in unserer Java-Anwendung zu verbessern. Bei der Verwendung des Speicheranalyse-Tools habe ich festgestellt, dass viele doppelte Zeichenfolgen aus Hibernate stammen. Zum Beispiel sieht die Speicher-Analyse-Tool über 6000 Vorkommen von „rowid_0_“ und „0_“, und auf der GC Root Tracing zeigt Hibernate Beteiligung:Wie kann die Java-String-Erstellung in Hibernate eingeschränkt werden?

enter image description here

Es scheint, als ob wir die Leistung verbessern können, wenn wir könnten intern diese Strings. Wenn es "unser" Code wäre, könnte ich es modifizieren und die Auswirkungen sehen. Gibt es irgendeine Möglichkeit, wie ich Hibernate dazu zwingen kann, internierte Strings zu verwenden?

+1

Welche Version von Hibernate verwenden Sie? Ich sehe keine 'new String()' in 'org.hibernate.loader.DefaultEntityAliases'. Wenn es etwas tut, stringt es intern. http://grepcode.com/file/repository.springsource.com/org.hibernate/com.springsource.org.hibernate/3.3.1/org/hibernate/loader/DefaultEntityAliases.java –

+0

@Steve Kuo - Wir verwenden Hibernate -core 3.6.10.Final und Hibernate-jpa-2.0-api. Könnte es eine JPA-Sache sein? – kc2001

+1

@Steve Kuo - In Zeile 87 des von Ihnen angegebenen Links sehe ich "rowIdAlias ​​= Loadable.ROWID_ALIAS + suffix;". Dies kann ein Täter sein. – kc2001

Antwort

1

Ich sehe jetzt, dass das Hibernate-Problem 3924 bezieht sich darauf. HHH-3924 hat jedoch den Status "Offen" und ist nicht aufgelöst. Es bezieht sich auf einen Code-Patch, der die Rowid Strings trainiert.

Verwandte Themen