Que fait réellement l'option-Xss JVM


De la documentation, -Xss est utilisé pour définir la taille de la pile de la JVM. Mais je suis très confus au sujet de cette déclaration.

En Java, chaque thread a sa propre pile. Est-ce que le nombre spécifié par-Xss:

  1. La mémoire totale qui peut être utilisée comme pile par tous les threads? par exemple, si-Xss est défini sur 256K, tous les threads créeront leur propre pile dans ces 256K de mémoire.

  2. La taille de chaque pile d'un thread. par exemple, si-Xss est défini sur 256K, chaque thread aura un pile de 256K grand. Par conséquent, 10 threads utiliseront 2560K au total.

Merci beaucoup.

MODIFIER:

Merci pour vos réponses. On dirait que c'est le (2) senario ci-dessus. - Xss spécifie la plus grande taille de pile d'un thread particulier.

Ensuite, j'ai une question de suivi: Où cette mémoire sera-t-elle allouée?

Nous pouvons spécifier la mémoire de tas réservée en utilisant-Xmx et-Xms. La pile sera-t-elle allouée à l'aide de ces mémoires réservées? Ou il est alloué à partir de la mémoire native directement?

Author: Kevin, 2016-07-07

2 answers

C'est la taille de la pile par thread, citant cette page sur la commande java:

-Xsstaille

Définit la taille de la pile de threads (en octets)...

C'est Donc la deuxième partie de votre question. Cependant, je ne pense pas qu'il soit généralement exact de résumer toutes les tailles de pile de threads. Selon l'implémentation de la JVM, la taille totale réelle de la pile peut ne pas être de 2560 Ko. Notez cette citation de la spécification JVM:

Cette spécification permet aux piles de machines virtuelles Java d'être de taille fixe ou de se développer et de se contracter dynamiquement selon les besoins du calcul. Si les piles de machines virtuelles Java ont une taille fixe, la taille de chaque pile de machines virtuelles Java peut être choisie indépendamment lors de la création de cette pile.

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

Chaque thread a sa propre pile. La plupart des JVM utilisent des threads natifs et ces piles utilisent de la mémoire virtuelle native. L'avantage de l'utilisation de la mémoire virtuelle est que seules les pages touchées se transforment en mémoire utilisée.

Où ces mémoires seront-elles allouées?

Mémoire native comme la pile de threads dans un programme C le ferait.

Nous pouvons spécifier la mémoire de tas réservée en utilisant-Xmx et-Xms. La pile sera-t-elle allouée à l'aide de ces mémoires réservées?

Les piles ne pas utiliser le tas donc, non.

Ou il est alloué directement à partir de la mémoire native?

Oui.

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