Dans certains cas, le code Java intercepte une NullPointerException mais ne parvient pas à enregistrer une StackTrace, laissant les développeurs perplexes car seulement " java.lang.NullPointerException" s'affiche.
Ceci Un problème déroutant a poussé les développeurs à chercher des solutions en ligne en vain. Cependant, après une enquête plus approfondie, il a été découvert que la cause première réside dans les stratégies d'optimisation de la JVM HotSpot.
Pour contrecarrer cette optimisation et restaurer la récupération de StackTrace, les développeurs doivent transmettre l'argument suivant à la JVM :
-XX:-OmitStackTraceInFastThrow
Cette optimisation découle de la gestion par la JVM des exceptions répétitives, telles que NullPointerExceptions. Lors de la première occurrence, la JVM enregistre le StackTrace complet. Cependant, avec des occurrences fréquentes, la JVM supprime la journalisation StackTrace à la fois pour des raisons de performances et pour éviter des entrées de journal excessives.
Une explication détaillée de cette implémentation peut être trouvée dans le code source de HotSpot JVM, en particulier dans le "graphKit. cpp". En ajustant la variable OmitStackTraceInFastThrow, les développeurs peuvent retrouver la visibilité de la trace de la pile et faciliter les processus de débogage.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3