2011-07-08 48 views
8

如何重現Java中的EXCEPTION_STACK_OVERFLOW錯誤。如何在Java中重現EXCEPTION_STACK_OVERFLOW錯誤

PS:我不是在討論StackOverflowError Java中的錯誤,它正常地關閉了JVM。我說的是error.log中的EXCEPTION_STACK_OVERFLOW,它會導致JVM崩潰。

+3

請仔細檢查你的* PS *,我想有一個小小的*不*在「am」和「talking」之間缺失... –

+2

我發現的大多數'EXCEPTION_STACK_OVERFLOW'錯誤都發生在JVM之外的本地代碼中......如果*裏面有*,那將是一個錯誤並且是固定。 –

+0

不是確切的答案,但somehwat在那裏http://stackoverflow.com/questions/65200/how-do-you-crash-a-jvm –

回答

6

大多數EXCEPTION_STACK_OVERFLOW錯誤,我迄今發現發生在本地代碼外JVM。在內部崩潰JVM值得一個錯誤報告,並且將被修復。還是你需要一個(未知的)漏洞?

所以最簡單和最可靠的方法是編寫一個本地庫,其中包含一些導致JVM崩潰並使用JNI調用的代碼。

(一般的回答,我居然不知道如何做到這一點恰好不能使用Java代碼只完成;))

+1

+1。我只能做+1,但想做+100確認我的理解。其他大多數人都提到過關於StackOverFlowError! –

3

吹堆棧:

public static void main(String[] args) { 
    main(null); 
} 

吹堆:

public static void main(String[] args) { 
    List<String> list = new ArrayList<String>(); 
    while(true) list.add(new String("boom")); 
} 
+2

以上都不會導致JVM崩潰。第一個會導致StackOverflowError,第二個會導致OutOfMemoryError。 –

3
public static void stackoverflow() 
{ 
    stackoverflow(); 
} 

調用它,並享受:d

+2

這會導致StackOverflowError而不是JVM崩潰! –