Chaque thread dans une application Java dispose de son propre pile. La pile est utilisée pour contenir des adresses de retour, la fonction/méthode des arguments d'appel, etc. Donc, si un thread a tendance à traiter de grandes structures via des algorithmes récursifs, il peut avoir besoin d'un gros tapis pour toutes ces adresses de retour et ces. Avec la JVM de Sun, vous pouvez définir la taille que par l'intermédiaire de ce paramètre.
Ainsi, L'-Xss option est utilisée pour limiter la quantité de mémoire une pile consomme (en stockant les adresses de retour, variables, etc) et qui a aussi indirectement les limites de la profondeur de la pile peut obtenir? Suis-je la corriger?
Je pense que l'utilisation plus fréquente est probablement à augmentation à la limite par défaut. (Il y a toujours une limite.) Mais oui, vous êtes en contrôle de la taille de la pile, qui contrôle la profondeur de la pile peut obtenir.
comment voulez-vous faire l'équivalent de ce XSS réglage sur le compilateur java (aka javac)? C'est une question pour ceux qui utilisent scala basé sur les bibliothèques qui causent la grande queue de récursivité pour arriver dans la compilation des classes – Andrew Norman 9 sec ago
Vous n'avez pas à compiler Java runtime options dans le fichier de classe, c'est plus un environnement spécifique à la chose. Si vous avez vraiment besoin de faire dans le code, vous pouvez écrire un petit classe principale dont la seule tâche est de lancer votre application avec les options dont vous avez besoin.
Vous pouvez donner JVM options de configuration du compilateur doit s'exécuter avec l'aide de -Jflag syntaxe (par exemple. -J-Xss).
malheureusement, le -J-Xss ou -JXss ne fonctionne pas avec des TAS de scripts. Du moins pas avec la classe de la compilation
mon problème est avec SBT scripts qui ne sont pas avec des classes compilées. Son la compilation des classes qui est le problème (pas le déroulement des cours). En essayant de trouver une ligne de paramètre que je peux stocker dans une pension plutôt que de régler manuellement le XSS sur chaque unique de construire et de développement de la machine. Si vous utilisez Scala, avec Slick / informes de la persistance et de grandes tables, vous serez frappé de ce problème lorsque vous avez décrit un tableau avec 80-90 colonnes. C'est parce que cette bibliothèque décrit les tables au moment de la compilation de la queue de la récursivité par colonne définie.
En effet, elle définit la taille de la pile sur une JVM.
Vous devez le toucher dans l'une de ces deux situations:
StackOverflowError (la taille de la pile est supérieure à la limite), augmentation de la valeur
OutOfMemoryError: impossible de créer un thread natif (trop de threads, chaque thread a une grande pile), de la diminuer.
Ce dernier vient généralement lorsque votre Xss est trop grand, alors vous devez équilibrer (les tests!)
Pas forcément tous les temps en fait. Les deux SOE et OOME pourrait se produire à cause de différentes raisons qui doivent être fixés de manière différente.
Vrai, mais je n'ai pas dis -Xss est la seule cause de SOE et OOME, mais l'inverse - si la valeur est incorrecte, il peut causer de l'un des deux.
Chaque thread a une pile qui est utilisé pour les variables locales et les valeurs internes. La taille de la pile des limites de la profondeur à vos appels, peut être. En général, ce n'est pas quelque chose que vous devez modifier.
Si je ne me trompe pas, c'est ce que dit la JVM combien les appels successifs d'accepter avant de délivrer un StackOverflowError. Pas quelque chose que vous souhaitez modifier général.
Chaque thread dans une application Java dispose de son propre pile. La pile est utilisée pour contenir des adresses de retour, la fonction/méthode des arguments d'appel, etc. Donc, si un thread a tendance à traiter de grandes structures via des algorithmes récursifs, il peut avoir besoin d'un gros tapis pour toutes ces adresses de retour et ces. Avec la JVM de Sun, vous pouvez définir la taille que par l'intermédiaire de ce paramètre.
-Jflag
syntaxe (par exemple.-J-Xss
).En effet, elle définit la taille de la pile sur une JVM.
Vous devez le toucher dans l'une de ces deux situations:
Ce dernier vient généralement lorsque votre Xss est trop grand, alors vous devez équilibrer (les tests!)
Chaque thread a une pile qui est utilisé pour les variables locales et les valeurs internes. La taille de la pile des limites de la profondeur à vos appels, peut être. En général, ce n'est pas quelque chose que vous devez modifier.
Si je ne me trompe pas, c'est ce que dit la JVM combien les appels successifs d'accepter avant de délivrer un StackOverflowError. Pas quelque chose que vous souhaitez modifier général.