2012-10-18 79 views
5

我理解Single Responsibility Principle的重要性,但從技術上講,我們是否有每個java方法中局部變量(存儲在堆棧幀中)的局部變量數量的上限。這個上限是否等於最大堆棧大小,即,我可以擁有一個大小等於最大堆棧大小的堆棧幀嗎?Java方法中局部變量的最大數量

+2

問題如何與單一責任原則相關? – Ankur

+1

好的。所以關係是,有一個局部變量太多的單一方法是不好的。在這種情況下,這可能違反了這一原則。 – Bajji

+0

你可以看看這篇文章: - http://stackoverflow.com/questions/3700459/how-to-increase-to-java-stack-size –

回答

4

定義局部變量的數量沒有上限。如果你定義了太多的變量,這些變量不適合堆棧幀(或者)JVM不能爲該大小分配一個堆棧幀,它將拋出StackOverflowError並退出。

斯坦福大學教授有很好的lecture可以幫助你。

+0

JVM是否創建一個固定大小的堆棧幀?如果有,有沒有辦法增加它?我知道-Xss控制堆棧大小,同樣有什麼可以控制幀大小? – Bajji

+1

堆棧幀大小由您的方法定義決定。每種方法都一樣。 –

+0

@Nambari,這對我來說並不合適。大小已知,最大爲65,536。 – Eugene

2

這將真正由您的運行時間定義,併爲每個進程分配了多少堆棧空間。