2012-12-05 7 views

risposta

5

L'interpretazione del flag -Xmx dipende dalla VM. Alcune macchine virtuali, incluso HotSpot, impongono un limite inferiore sul valore effettivo di questa opzione. La proposta CCC non avrebbe dovuto menzionare la bandiera -Xmx in questo modo.

Reference

4

restituisce la quantità massima di memoria che la macchina virtuale Java tentativo di utilizzare, JVM non può utilizzare tutta la memoria che avete definito come -Xmx parametro per appena mucchio.

+0

Puoi fornire una descrizione più approfondita? È perché "maxMemory() dovrebbe restituire (un'approssimazione di) la memoria che è utilizzabile per oggetti" normali "e non dovrebbe includere lo spazio aggiuntivo necessario da il garbage collector (ad esempio, uno spazio aggiuntivo sopravvissuto) e non dovrebbe includere la generazione permanente. " http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4505762 – LostInComputer

+0

@LostInComputer: Heap è diviso in 3 spazi (Modifiche basate sull'implementazione di jvm), giovane, superstite e permanente. giovane è il luogo in cui verranno creati nuovi oggetti e si trasferirà al sopravvissuto sul primo GC. Leggi questa documentazione http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html – kosa

+0

La mia comprensione è che il collegamento da te fornito riguardo a quale di queste 3 generazioni debba essere preso in considerazione durante la segnalazione maxMemory(). – kosa

1

-Xmxn

specificare la dimensione massima, in byte, del pool di allocazione di memoria. Questo valore deve essere un multiplo di 1024 maggiore di 2 MB. Aggiungere la lettera k o K per indicare i kilobyte oppure m o M per indicare i megabyte. Il valore predefinito è 64 MB. Il limite superiore per questo valore sarà circa 4000m su Solaris 7 e Solaris 8 SPARC e 2000m su Solaris 2.6 e piattaforme x86, meno le spese generali. Esempi:

 -Xmx83886080 
     -Xmx81920k 
     -Xmx80m 

maxMemory()

restituisce la quantità massima di memoria che la macchina virtuale Java tenterà di utilizzare. Se non è presente alcun limite inerente, verrà restituito il valore Long.MAX_VALUE.

Problemi correlati