2012-10-18 14 views
5

Ich verstehe die Bedeutung von Single Responsibility Principle, aber technisch gesehen haben wir eine obere Grenze für die Anzahl der lokalen Variablen (die in Stack-Rahmen gespeichert) innerhalb jeder Java-Methode. Und ist diese Obergrenze gleich der maximalen Stapelgröße, dh, kann ich einen Stapelrahmen haben, dessen Größe der maximalen konfigurierten Stapelgröße entspricht?Maximale Anzahl von lokalen Variablen in einer Java-Methode

+2

Wie bezieht sich die Frage auf das Prinzip der einfachen Verantwortlichkeit? – Ankur

+1

Ok. Die Beziehung ist also, dass es nicht gut ist, eine einzige Methode mit zu vielen lokalen Variablen zu haben. In diesem Fall könnte es gegen dieses Prinzip verstoßen. – Bajji

+0

Sie können diesen Beitrag ansehen: - http://stackoverflow.com/questions/3700459/how-to-increase-to-java-stack-size –

Antwort

4

Es gibt keine obere Grenze bei der Definition der Anzahl der lokalen Variablen. Wenn Sie zu viele Variablen definieren, die nicht in einen Stapelrahmen passen (oder) JVM konnte keinen Stapelrahmen für diese Größe zuweisen, wird StackOverflowError geworfen und beendet.

Es gibt gute lecture von einem Stanford Professor, die Ihnen helfen können.

+0

Erstellt JVM eine feste Größe Stapelrahmen? Wenn ja, gibt es eine Möglichkeit, es zu erhöhen? Ich weiß, dass -Xss die Stack-Größe steuert, gibt es auch etwas, um die Frame-Größe zu kontrollieren? – Bajji

+1

Die Größe des Stack-Frames hängt von Ihrer Methodendefinition ab. Es ist immer dasselbe für jede Methode. –

+0

@Nambari, das ist einfach nicht richtig für mich. Die Größe ist bekannt und es ist maximal 65.536. – Eugene

2

Dies wird wirklich durch Ihre Laufzeit definiert und wie viel Stack-Speicherplatz pro Prozess zugeordnet ist.

Verwandte Themen