2014-12-31 18 views
5

Sto profilando un'applicazione e l'utilizzo di intern per l'inserimento di stringhe aiuta davvero. Quello che voglio trovare è un buon numero da usare per il pool di oggetti quindi non avrò penalità di prestazioni. Come posso sapere quante stringhe sono state inserite nel pool interno?Quante stringhe sono in jvm stagni pool di stringhe

Sto eseguendo qualche traccia di produzione, non posso davvero contare l'input.

La JVM offre una API per questo?

risposta

6

A partire da JDK7, è possibile utilizzare il flag JVM -XX:+PrintStringTableStatistics per stampare informazioni sulla dimensione della tabella di stringhe, ad esempio il numero di bucket e la dimensione di un bucket.

È anche possibile utilizzare lo strumento jmap chiamando il comando jmap -heap *process_id* che mostra alla fine il numero di stringhe internate e la dimensione totale (richiede anche JDK7 +).

Verificare this blog post per ulteriori dettagli.

+0

Questo stampa le statistiche una volta in uscita standard, vorrei monitorarlo in qualche modo. poiché rilascia stringhe non utilizzate, voglio vedere il numero massimo di stringhe che lo occupano nel ciclo di vita dell'applicazione. – Zamir

+1

Un altro post di blog utile su questo argomento: [* String.intern in Java 6, 7 e 8 - pooling di stringhe *] (http://java-performance.info/string-intern-in-java-6-7-8 /) di [Mikhail Vorontsov] (http://java-performance.info/author/Mike/) –

Problemi correlati