2011-08-15 192 views
0

如何設置最大堆棧大小?java集最大堆棧大小

我使用jEdit在相當大的文件(73 kb)中用正則表達式進行搜索,並且因爲StackOverflowException而失敗。

我試圖設置-Xss40m,但它似乎是初始堆棧大小,一段時間後它失敗與下面的異常後

11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: Exception in thread "AWT-EventQueue-0" 
11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: java.lang.OutOfMemoryError: unable to create new native thread 
11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: at java.lang.Thread.start0(Native Method) 
11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: at java.lang.Thread.start(Unknown Source) 
11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: at java.awt.EventQueue.initDispatchThread(Unknown Source) 
11:45:31 AM [AWT-EventQueue-0] [error] AWT-EventQueue-0: at java.awt.EventDispatchThread.run(Unknown Source) 

,如果你給我解釋一下,爲什麼內存不足拋出我將不勝感激,以及如何設置最大堆棧大小。

+0

的可能重複【JAVA:無法創建新的本地線程(http://stackoverflow.com/questions/5253072/java -unable-to-create-new-native-thread) –

+0

StackOverflowException通常表示您正在使用遞歸方法,並且您沒有添加退出情況,或者某個方法意外地自行調用。 – Goibniu

+0

文件是73 kB(一個相當小的文件)還是正則表達式73 kB(一個非常昂貴的正則表達式)? –

回答

0

也許你應該設置堆內存大小爲這樣:

java -Xms 512m -Xmx 1024m

+0

雖然它沒有用完堆。 –

+0

或者它可能會:在增加堆棧大小後,他正在出現OutOfMemoryError。 – Thilo