Quando dovremmo lavorare sull'ottimizzazione del GC? [chiuso]

1

Quindi, ho appreso come funziona GC e come posso monitorarlo tramite VisualVM , ma la mia domanda riguarda il motivo per cui dovremmo eseguire l'ottimizzazione GC? Nel nostro progetto web (JSF / Spring / Hibernate) non abbiamo pensato a questo tipo di ottimizzazione. Non è importante e dove tale ottimizzazione può essere importante?

    
posta Dmitrii Bundin 14.12.2014 - 11:46
fonte

2 risposte

5

Quando il tuo progetto presenta problemi di prestazioni. È possibile mettere a punto l'algoritmo della raccolta dati inutili, con quale frequenza eseguirlo, a seconda dei requisiti prestazionali. Diciamo che hai molta RAM sul tuo server ma non troppa potenza della CPU, quindi vuoi ritardare il garbage collector il più possibile alla notte, per esempio. E così via.

    
risposta data 14.12.2014 - 12:01
fonte
3

(Disclaimer: non lavoro sui backend lato server, e non ho alcun IT operativo esperienza La mia risposta qui sotto è solo dalla teoria dell'architettura e non dall'esperienza.)

Se non sei sicuro di cosa fare, prova il seguente ordine di precedenza.
(I primi due passaggi non hanno nulla a che fare con GC, ma se questi due non sono presi in considerazione, parlare di ottimizzazione GC è inutile.)
ma per favore non seguire ciecamente; come ho detto, non ho esperienza in questo.

  • Prima di tutto, dovresti trovare ed eliminare le perdite di memoria nella tua base di codice.
  • Successivamente, dovresti identificare l'uso eccessivo della memoria nella tua base di codice e migliorarlo.
  • Quindi, dovresti imparare i fondamenti di GC (che hai già realizzato).
  • Una volta appresa, è necessario iniziare a monitorare quelle statistiche vitali, in tutti gli ambienti: sviluppo, test e produzione.
  • Quando quelle statistiche vitali indicano che il tuo progetto potrebbe potenzialmente soffrire di un problema di GC, usa le tecniche apprese per isolare la causa e / o applica una o più attenuazioni per mantenere il problema sotto controllo.

Quali sono alcune delle cose che potrebbero essere regolate?

Solo alcuni esempi: scusa se i miei esempi sono sbagliati.

  • Ottimizza l'hardware (dimensioni della RAM)
  • Ottimizza il sistema operativo
  • Sintonizza la JVM o GC
  • Metti a punto il tuo progetto nel modo in cui utilizza (generando e mantenendo) oggetti di lunga vita, se tali oggetti rappresentano collettivamente una frazione significativa dell'utilizzo complessivo della memoria.
risposta data 14.12.2014 - 12:31
fonte

Leggi altre domande sui tag