2010-07-30 10 views
30

Sto osservando le opzioni di configurazione JVM per l'esecuzione di Alfresco, principalmente il documento this su Alfresco Wiki. Uno dei consigli è utilizzare le flag JVM -Xcomp e -Xbatch. La giustificazione è questa:Ottimizzazione Java VM - Xbatch e -Xcomp

Se si desidera che Hotspot esegua il precompilazione delle classi, è possibile aggiungere [-Xcomp e -Xbatch]. Ciò, tuttavia, aumenterà significativamente il tempo di avvio del server, ma evidenzierà le dipendenze mancanti che possono essere colpite in seguito.

da quello che ho read elsewhere sui -Xcomp e -Xbatch bandiere, mi chiedo se davvero forniscono alcun beneficio.

  • -Xcomp ottiene HotSpot per compilare tutto il codice in anticipo con la massima ottimizzazione, rinunciando in tal modo qualsiasi profiling che la macchina virtuale otterrà attraverso la gestione standard del sistema.
  • -Xbatch interrompe la compilazione dello sfondo, ovvero il thread che ha causato il blocco del codice fino al completamento della compilazione. Tuttavia, al termine della compilazione, il thread precedentemente bloccato non eseguirà il codice compilato, it will still run the interpreted code. Questo è stato un cambiamento in Java 6 (Mustang) - prima di Mustang, i thread bloccati per la compilazione dalla presenza del flag -Xbatch venivano garantiti per l'esecuzione nel codice compilato non appena completata la compilazione. Pertanto, suppongo che la raccomandazione del flag -Xbatch sia una reliquia di esecuzione di Alfresco su macchine virtuali precedenti.

Qualcuno ha qualche idea? La mia inclinazione è di sbarazzarsi di queste due bandiere e fare affidamento sulla VM per sistemare le cose.

Vorrei aggiungere due cose, prima di tutto che non ho ancora accesso a un'istanza Alfresco per testarlo e, in secondo luogo, non so davvero quale tipo di macchina stia ospitando Alfresco a parte quello da guardando le altre opzioni di configurazione deve essere una macchina virtuale a 64 bit. Nonostante ciò, spero che la community abbia qualche input utile, forse da un punto di vista generale di ottimizzazione di HotSpot.

+0

La sezione di esempio del mondo reale nella pagina di Alfresco è agosto 2009 e sembra essere JDK 1.6? – shinynewbike

+0

@ktaylorjohn Sì, è corretto, ma mi chiedo solo se i flag -Xbatch e -Xcomp non fanno alcuna differenza. Alfresco sembra essere l'unico progetto che menziona queste bandiere al di fuori del regno dei test JVM e simili. Il collegamento – Rich

risposta

21

In generale, è sempre preferibile lasciare che il compilatore HotSpot si sintonizzi da solo. Anche l'utilizzo di Server VM (-server) è predefinito per 64 bit e alcune macchine 'server-class'.

-Xbatch era destinato principalmente per il debug, come descritto nella Steve Goldman's blog lei ha:

Così l'interruttore -Xbatch non è un interruttore particolarmente utile anche nei giorni pre-mustang. È in qualche modo utile per gli sviluppatori di jvm poiché tende a rendere una corsa più prevedibile e riproducibile.

-Xcomp rimuove la capacità di raccogliere informazioni per una compilazione efficiente. Da un Alex Turner's post:

Si potrebbe pensare che -Xcomp sarebbe una buona idea dal punto di vista delle prestazioni. Tuttavia, non lo è! Il compilatore JIT utilizza quelle 1000 iterazioni prima della compilazione per raccogliere informazioni su come il metodo dovrebbe essere compilato per l'efficienza ottimale. -Xcomp rimuove la sua capacità di farlo e quindi possiamo effettivamente vedere lo slittamento delle prestazioni.

Senza prestazioni in mente, non ho mai visto con quelle bandiere per rilevare le dipendenze mancanti (and it may not work if some code is still interpreted) così IMHO, mi sarebbe sbarazzarsi di entrambi.

+0

è morto btw – Eugene

0

Alfresco è un Enterprise Content Management. Non sono sicuro di come le bandiere influenzano le sue prestazioni. Quindi una nota nella stessa pagina ha detto ..

- Ciò, tuttavia, aumenterà significativamente il tempo di avvio del server, ma evidenzierà le dipendenze mancanti che possono essere colpite in seguito. ...

IMHO, L'autore non ha davvero significato un guadagno in termini di prestazioni. Lui/lei ha scritto come mezzo per verificare tutte le dipendenze sono a posto.

Problemi correlati