Java 參數 + StackOverflowError 的處理


java.lang.OutOfMemoryError 中

PermGen Space:
默認變數通常都是 64M, 我們可以通過 -XX:MaxPermSize=128m 修改,一般的服務器以安全為建,就該設定為 256m 比較好?

Heap Space Or Other:
這和之前的都是同一個異常,但解決的方法就需要分開來處理,解決的方法是更改 -Xms -Xmx 這兩個參數,而 xms 是管理啟動時最小內存量的,而 xmx 是管理 JVM 的最大內存量.

java.lang.StackOverflowError
這個是因為 stack 分區不能夠再動態的增加,或者不足夠生成新的線程?(好像這個,還得找找資料)
一種是 Stacks 里面的線程超過了原生的數量時?另一種是因為 native method 要求更大的內存?

如果要提高後者就可以通過 -XX:ThreadStackSize=512 的方法
如果要提高前者就可以通過 -Xss10M 的方法(增加堆栈(Stack)的大小)

這樣比起 System.gc() 來得有效?

1
java -XX:PermSize=128m -XX:MaxPermSize=128m -Xms384m -Xmx512m -XX:ThreadStackSize=512 -Xss10M MyProgramFile < c:\xxx.dat