1. 程式人生 > >Excption與Error包結構,OOM 你遇到過哪些情況,SOF 你遇到過哪些情況

Excption與Error包結構,OOM 你遇到過哪些情況,SOF 你遇到過哪些情況

Throwable 是 Java 中所有錯誤與異常的超類,Throwable 包含兩個子類,Error 與 Exception 。用於指示發生了異常情況。

Java 丟擲的 Throwable 可以分成三種類型。

被檢查異常(checked Exception),執行時異常(RuntimeException),錯誤(Error)。

首先說一下:

 

1. 被檢查異常(checked Exception )

定義:RuntimeException 及其子類,被稱為執行時異常。特點,Java 編譯器不會檢查他,也就是說,當程式可能出現這類異常,即使沒有“throw 宣告丟擲它”,也沒有“try  catch ”來捕獲它。還是會編譯通過。

例如,除數為零的產生的 ArithmeticException 的異常,陣列越界產生的 IndexOutOfBoundsException 異常。fail-fail 機制產生的 ConcurrentModificationException 異常,都屬於執行時異常。

 

2. 堆記憶體溢位(out of Memory Error )(OOM)

除了程式計數器,虛擬機器記憶體的幾個執行區域都有可能出現 OutOfMemoryError (OOM)

Java 的堆溢位,一般異常資訊是:java.lang.OutOfMemoryError:Java heap spacess。Java 堆用於儲存物件例項,我們只要不斷建立物件,並且保證 GC Roots 到物件之前有可達路徑來避免垃圾回收機制清除這些物件。就會在物件數量達到最大堆容量限制後產生記憶體溢位異常。

 

3.堆疊溢位 StackOverflow (SOF)

StackOverflowError 給的定義是,當應用程式遞迴太深而發生堆疊溢位,丟擲該錯誤。因為棧記憶體預設是 1 M ~ 2M ,大量遞迴呼叫或者死迴圈中,在不斷壓棧中,造成棧容量超過 1 M 而導致的溢位。