Cosa fa effettivamente l'opzione JVM-Xss


Dalla documentazione, -Xss viene utilizzato per impostare la dimensione dello stack di JVM. Ma sono molto confuso su questa affermazione.

In Java, ogni thread ha il proprio stack. Il numero specificato da-Xss:

  1. La memoria totale che può essere utilizzata come stack da tutti i thread? ad esempio, se-Xss è impostato su 256K, tutti i thread creeranno il proprio stack all'interno di questo 256K di memoria.

  2. La dimensione di ogni pila di un thread. ad esempio, se-Xss è impostato su 256K, ogni thread avrà un pila di 256K grande. Quindi 10 thread userà 2560K del tutto.

Vi ringrazio molto.

MODIFICA:

Grazie per le vostre risposte. Sembra che sia il (2) senario sopra. - Xss specifica la dimensione dello stack più grande di un particolare thread.

Quindi ho una domanda di follow-up: dove verrà allocata questa memoria?

Possiamo specificare la memoria heap riservata usando-Xmx e-Xms. Lo stack verrà allocato usando queste memorie riservate? O è assegnato da la memoria nativa direttamente?

Author: Kevin, 2016-07-07

2 answers

È la dimensione dello stack per thread, citando questa pagina sul comando java :

-Xssdimensione

Imposta la dimensione dello stack del thread (in byte)...

Quindi è la seconda parte della tua domanda. Tuttavia, non penso che sia generalmente accurato riassumere tutte le dimensioni dello stack di thread. A seconda dell'implementazione JVM, la dimensione totale effettiva dello stack potrebbe non essere 2560K. Nota questa citazione dalla specifica JVM:

Questa specifica consente agli stack di macchine virtuali Java di avere una dimensione fissa o di espandersi e contrarsi dinamicamente come richiesto dal calcolo. Se gli stack di macchine virtuali Java sono di dimensioni fisse, la dimensione di ogni stack di macchine virtuali Java può essere scelta indipendentemente quando viene creato lo stack.

 7
Author: manouti, 2016-07-07 10:36:17

Ogni thread ha il proprio stack. La maggior parte delle JVM utilizza thread nativi e questi stack utilizzano memoria virtuale nativa. Il vantaggio di utilizzare la memoria virtuale è solo le pagine toccate si trasformano in memoria utilizzata.

Dove verrà allocata questa memoria?

Memoria nativa come lo stack di thread in un programma C.

Possiamo specificare la memoria heap riservata usando-Xmx e-Xms. Lo stack verrà allocato usando queste memorie riservate?

Le pile non usare l'heap quindi, no.

O viene allocato direttamente dalla memoria nativa?

Sì.

 3
Author: Peter Lawrey, 2016-07-07 21:01:34