2015-09-15 1 views
-1

Pour la JVM Hotspot, est-ce que l'option Xss définit la taille initiale de la pile qui est toujours fixée à cette taille? Ou définit-il la taille de pile maximale afin que la pile commence avec une taille inférieure et peut ensuite atteindre la taille maximale définie?L'option "Xss" de la JVM Hotspot définit-elle la "taille de pile initiale" qui est fixée ou la "taille de pile maximale" jusqu'à laquelle la pile peut se développer?

Ce comportement est assez clair pour la "taille de segment" où "Xms" définit la taille de segment de mémoire initiale et "Xmx" définit la taille de segment de mémoire maximale. Mais l'option "Xss" ne semble pas claire pour moi.

REMARQUE: J'ai lu le message Dynamically expandable JVM stack, mais je n'ai pas pu obtenir la réponse claire de ce message.

Répondre

0

-Xss définit la taille initiale de la pile de threads (ajustée par des algorithmes spécifiques au système d'exploitation).

E.g. jetez un oeil à la linux implementation, ligne 4130-4151:

La valeur -Xss a été placée dans la variable ThreadStackSize par le lanceur. Après assainissement et arrondi, il est stocké via JavaThread::set_stack_size_at_create et sera ensuite utilisé pour dimensionner la pile lorsqu'un nouveau thread Java est créé. Je ne sais pas si Hotspot implémente l'expansion dynamique des empilements de fil.

+0

Merci pour la clarification. Supposons que mon processus d'application a 10 threads, 9 d'entre eux ayant besoin de 128k et l'un d'entre eux ayant besoin de 1024k. Idéalement, 2176k (128k * 9 + 1024k) de mémoire de pile aurait suffi pour cette application. Est-ce que le réglage de Xss à 1024k réserve une mémoire de pile initiale et fixe de 10 Mo (1024k * 10) quand les threads commencent, alors qu'en réalité 2176k aurait suffi? Donc, une mémoire supplémentaire de 8064k est gaspillée puisque la même mémoire pourrait avoir été utilisée à d'autres fins comme le tas? –

+0

@SanjayBhat oui qui semble être la triste conséquence – wero