[java] JVM 옵션 -Xss-정확히 무엇을합니까?

그것은 말한다 여기 -Xss는 “세트 스레드 스택 크기”를 사용하는 것이, 정확히 무엇을 의미 하는가? 누구든지 이것을 이해하도록 도울 수 있습니까?



답변

Java 응용 프로그램의 각 스레드에는 자체 스택이 있습니다. 스택은 리턴 주소, 함수 / 메소드 호출 인수 등을 보유하는 데 사용됩니다. 따라서 스레드가 재귀 알고리즘을 통해 큰 구조를 처리하는 경향이있는 경우 모든 리턴 주소 등을 위해 큰 스택이 필요할 수 있습니다. Sun JVM을 사용하면 해당 매개 변수를 통해 해당 크기를 설정할 수 있습니다.


답변

실제로 JVM에서 스택 크기를 설정합니다.

다음 두 상황 중 하나에서 터치해야합니다.

  • StackOverflowError (스택 크기가 한계보다 큼) 값을 늘리십시오.
  • OutOfMemoryError : 새 원시 스레드를 만들 수 없습니다 (너무 많은 스레드, 각 스레드에 큰 스택이 있음).

후자는 일반적으로 Xss가 너무 크게 설정되면 나타납니다. 그런 다음 균형을 잡아야합니다 (테스트 중!)


답변

각 스레드에는 로컬 변수 및 내부 값에 사용되는 스택이 있습니다. 스택 크기는 통화 깊이를 제한합니다. 일반적으로 이것은 변경할 필요가 없습니다.


답변

내가 실수하지 않은 경우, 이것은 StackOverflowError를 발행하기 전에 JVM이 얼마나 많은 연속 호출을 수락하는지 알려줍니다. 일반적으로 바꾸고 싶은 것이 아닙니다.


답변