4 votes

Comment ajuster les configurations de la JVM pour réduire la taille maximale de la pile de threads ?

Je veux modifier la taille par défaut de la pile de threads en Java pour mon application Web Spring-Boot. Comment puis-je changer cela ? ou quel paramètre dois-je utiliser pour changer cette valeur ?

Par ailleurs, la deuxième question est la suivante : puis-je modifier ce paramètre de manière programmatique au moment de l'exécution ?

2voto

Ashutosh Chamoli Points 163

Oui, vous pouvez le faire. En fait, vous pouvez configurer la taille maximale du stack de votre thread dans votre application.

Pour cela, vous pouvez utiliser l'option nommée ss pour régler la taille maximale de la pile. Une option VM est généralement passée en utilisant -X{option} . Vous pouvez donc utiliser java -Xss1M pour fixer la taille maximale de la pile à 1M .

Un autre exemple est java -Xss1048576 ce qui fixe la taille maximale des fils à environ 1 Mo.

Consultez également les deux blogs ci-dessous pour plus d'informations et d'autres drapeaux.

-> https://www.baeldung.com/jvm-configure-stack-sizes

-> https://docs.gigaspaces.com/latest/production/production-jvm-tuning.html

2voto

jumar Points 187

Je souhaite ajouter quelques ressources très utiles :

La valeur par défaut est de 1M par thread, mais heureusement les choses ne sont pas si mauvaises. Le système d'exploitation alloue les pages de mémoire paresseusement, c'est-à-dire à la première utilisation, de sorte que l'utilisation réelle de la mémoire sera beaucoup plus faible (généralement 80-200 Ko par pile de threads).

dans le JDK 11/12 [taille minimale de la pile de threads] est : min_stack_size = 40 KB + (1 + 2 + 1 + 20) * 4 KB = 136 KB

Si j'essaie de définir une valeur inférieure, je risque d'obtenir une erreur :

/usr/java/jdk-12.0.2/bin/java -Xss100k

La taille de la pile de threads Java spécifiée est trop petite. Spécifiez au moins 136k

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X