web-dev-qa-db-fra.com

Option JVM -Xss - Que fait-elle exactement?

Il dit ici que -Xss est utilisé pour "définir la taille de la pile de threads", qu'est-ce que cela signifie exactement? Quelqu'un pourrait-il m'aider à comprendre cela?

214
instantsetsuna

Chaque thread d'une application Java a son propre pile . La pile est utilisée pour contenir les adresses de retour, les arguments d'appel de fonction/méthode, etc. Ainsi, si un thread a tendance à traiter des structures volumineuses via des algorithmes récursifs, il peut avoir besoin d'une pile volumineuse pour toutes ces adresses de retour, etc. Avec la JVM Sun, vous pouvez définir cette taille via ce paramètre.

252
T.J. Crowder

Il définit en effet la taille de la pile sur une machine virtuelle.

Vous devriez le toucher dans l'une ou l'autre de ces deux situations:

  • StackOverflowError (la taille de la pile est supérieure à la limite), augmentez la valeur
  • OutOfMemoryError: impossible de créer un nouveau thread natif (trop de threads, chaque thread a une grande pile), diminuez-le.

Ce dernier arrive généralement lorsque votre Xss est défini sur une taille trop grande - alors vous devez l’équilibrer (tester!)

156
Adam Adamaszek

Chaque thread a une pile utilisée pour les variables locales et les valeurs internes. La taille de la pile limite la profondeur de vos appels. Généralement, ce n'est pas quelque chose que vous devez changer.

5
Peter Lawrey

Si je ne me trompe pas, c'est ce qui indique à la JVM le nombre d'appels successifs qu'elle acceptera avant d'émettre une erreur StackOverflowError. Pas quelque chose que vous souhaitez changer en général.

4
Kellindil