Le JVM recenti hanno molti parametri XX per la garbage collection (vedere here per esempio), ma quali sono le opzioni che possono rendere l'applicazione Swing lato client davvero migliore?Quali sono le migliori impostazioni di garbage collection per il lato client?
Devo notare che una delle cose che mi infastidisce davvero sulle applicazioni java lato client è il grande ritardo nella raccolta dati obsoleti di stop-the-world. In Intelli-J IDEA l'ho visto passare tre minuti o più.
EDIT: Grazie per tutte le risposte. Solo per segnalare che ho messo il garbage collector CMS per IDEA (che è un buon riferimento comune del tipo di applicazione a cui la maggior parte di tutti coloro che leggono questa domanda ha familiarità) usando l'impostazione suggerita da here. Ho anche impostato -XX: + StringCache per vedere se avrebbe ridotto i requisiti di memoria.
In generale, l'osservazione è che le prestazioni di corsa regolari non sono degradate al punto che si può notare guardandolo. La riduzione della memoria è enorme utilizzando l'opzione Cache stringa, tuttavia il metodo CMS non è completo e termina per richiedere l'interruzione del ciclo di garbage collection mondiale (di nuovo ai tre minuti di attesa) per cancellare la memoria (400 MB in una corsa) .
Tuttavia, dato il ridotto ingombro di memoria, potrei essere in grado di mettere solo una piccola quantità massima di memoria che manterrà il fermo delle collezioni mondiali di dimensioni più piccole.
IDEA 8.1.4 viene fornito con JDK 1.6.0_12, quindi non ho ancora provato G1. Inoltre, la mia macchina ha solo 2 core, quindi un approccio G1 non sarà massimizzato. È ora di colpire il boss per una macchina migliore;).
Grazie per la risposta, ma cosa vorresti cercare nel profiling. Questo è ciò che i dati indicherebbero una direzione piuttosto che un'altra? – Yishai
Bene, solitamente, il throughput GC, il tempo di pausa massimo e medio, la frequenza del GC completo e la loro durata (per trovare il miglior compromesso). Ma è difficile rispondere a questo per te :) –