Option JVM -Xss – Que fait-il exactement?

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

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

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

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

  • StackOverflowError (la taille de la stack 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 stack), diminuez-le.

Ce dernier vient généralement lorsque votre Xss est trop grand – vous devez alors l’équilibrer (tester!)

Chaque thread a une stack utilisée pour les variables locales et les valeurs internes. La taille de la stack limite la profondeur de vos appels. En général, ce n’est pas quelque chose que vous devez changer.

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