Apabila berurusan dengan NullPointerExceptions dalam Java, pembangun mungkin menghadapi situasi di mana surih tindanan tidak hadir sama sekali, menjadikannya sukar untuk mengesan sumber pengecualian.
Lazimnya, apabila NullPointerException dilemparkan, jejak tindanannya memberikan maklumat berharga tentang laluan kod yang menyinggung. Walau bagaimanapun, pengoptimuman tertentu yang dilakukan oleh JVM HotSpot boleh menyekat jejak tindanan ini.
Untuk mendapatkan kembali surih tindanan, pilihan berikut mesti dihantar kepada JVM:
-XX:-OmitStackTraceInFastThrow
Pilihan ini mengarahkan JVM untuk mengelak daripada mengoptimumkan pengendalian NullPointerExceptions, memastikan bahawa surih tindanan dicetak untuk setiap kejadian pengecualian.
The HotSpot JVM menggunakan teknik pengoptimuman yang menyimpan jejak tindanan untuk pengecualian yang kerap berlaku, terutamanya NullPointerExceptions. Pengoptimuman ini bertujuan untuk meningkatkan prestasi dan menghalang pengelogan berlebihan bagi surih tindanan yang sama.
Dalam HotSpot JVM, pengoptimuman ini dilaksanakan dalam fail graphKit.cpp. Ia melibatkan pembolehubah global bernama OmitStackTraceInFastThrow, yang mengawal penindasan surih tindanan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Jejak Tindanan untuk NullPointerExceptions Apabila Pengoptimuman Menghalangnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!