في بعض الحالات، يلتقط كود Java NullPointerException ولكنه يفشل في تسجيل StackTrace، مما يترك المطورين في حيرة من أمرهم فقط " java.lang.NullPointerException" هو معروض.
تركت هذه المشكلة المحيرة المطورين يبحثون عن حلول عبر الإنترنت دون جدوى. ومع ذلك، بعد مزيد من التحقيق، تم اكتشاف أن السبب الجذري يكمن في إستراتيجيات تحسين HotSpot JVM.
لمواجهة هذا التحسين واستعادة استرجاع StackTrace، يجب على المطورين تمرير الوسيطة التالية إلى JVM:
-XX:-OmitStackTraceInFastThrow
ينبع هذا التحسين من معالجة JVM لـ الاستثناءات المتكررة، مثل NullPointerExceptions. عند التكرار الأولي، يقوم JVM بتسجيل StackTrace الكامل. ومع ذلك، مع التكرارات المتكررة، يقوم JVM بمنع تسجيل StackTrace لأسباب تتعلق بالأداء ولتجنب إدخالات السجل الزائدة.
يمكن العثور على شرح تفصيلي لهذا التنفيذ في كود مصدر HotSpot JVM، وتحديدًا داخل "graphKit. cpp" ملف. من خلال ضبط متغير OmitStackTraceInFastThrow، يمكن للمطورين استعادة رؤية تتبع المكدس وتسهيل عمليات التصحيح.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3