Java執行時棧機制
每次Java中的程序、程式碼或執行緒需要執行時,都會建立一個執行時棧來儲存執行執行緒期間執行的操作。
執行時棧中的每個條目都稱為棧幀或啟用記錄。一旦程序呼叫了某個函式,其關聯的資料就會從執行時棧中刪除。
一旦所有函式都被呼叫,執行時棧將為空。這意味著它需要從記憶體中移除。
此時,執行時棧被銷燬,然後執行緒也終止。
執行緒的終止可以線上程完成(主動)或強制(異常終止)後發生。
執行時棧中元素銷燬的順序與執行時任務中條目建立的順序相反。
當執行緒正常執行並完成執行時,會呼叫主函式,其條目將儲存在執行時棧中。類似地,其他函式(如果有)被呼叫,它們的條目也被儲存。當函式完成執行時,就該從執行時棧中刪除條目了。最後執行的函式是第一個被刪除條目的函式。
當執行緒異常終止時,這意味著並非所有程式碼行都能成功執行。這意味著由於遇到錯誤而引發了異常。下面是一個示例:
示例
public class Demo{ public static void main(String[] args){ test(); } public static void test(){ test_2(); System.out.println("This is a test method."); } public static void test_2(){ System.out.println(45/0); System.out.println("This is a method that divides 10 by 0."); } }
輸出
Exception in thread "main" java.lang.ArithmeticException: / by zero at Demo.test_2(Demo.java:14) at Demo.test(Demo.java:9) at Demo.main(Demo.java:5)
名為Demo的類包含main函式,其中呼叫了'test'函式。定義了'test'函式,其中呼叫了'test_2'函式。定義了名為'test_2'的函式,其中嘗試將一個數字除以0。這導致了一個異常,該異常列印在控制檯上。因此,控制權不會到達'println'行以列印錯誤訊息。
廣告