فحص المكدس بصورة كسولة باستخدام StackWalker
افحص إطارات المكدس بصورة كسولة باستخدام StackWalker بدلاً من إنشاء تتبّع مكدس كامل.
مقارنة الكود
✕ Materialized stack trace
StackTraceElement caller = Thread.currentThread()
.getStackTrace()[2];
String callerClass = caller.getClassName();
✓ Java 9+
String callerClass = StackWalker.getInstance()
.walk(frames -> frames.skip(1)
.findFirst()
.orElseThrow()
.getClassName());
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
اجتياز كسول
يزور فقط الإطارات التي تحتاجها العملية.
ملائم للتدفقات
تستخدم التصفية والاختيار عمليات التدفق القياسية.
قابل للتهيئة
تدعم الخيارات مراجع الفئات والإطارات المخفية أو الانعكاسية.
الأسلوب القديم
Thread.getStackTrace()
الأسلوب الحديث
StackWalker
منذ JDK
9
الصعوبة
متوسط
دعم JDK
فحص المكدس بصورة كسولة باستخدام StackWalker
متاح
متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)
كيف يعمل
يتيح StackWalker تدفقاً كسولاً لإطارات المكدس ووصولاً قابلاً للتهيئة إلى مراجع الفئات المحتفظ بها. يمكن للشيفرة التوقف بمجرد العثور على الإطار المطلوب بدلاً من تخصيص مصفوفة كاملة لتتبّع المكدس.
توثيق ذو صلة
إثبات