2016-07-07 3 views
5

설명서에서 -Xss를 사용하여 JVM의 스택 크기를 설정합니다. 그러나 나는이 진술에 대해 매우 혼란 스럽다.-Xss JVM 옵션이 실제로 수행하는 작업

Java에서 모든 스레드는 자체 스택을 가지고 있습니다. -Xss로 지정된 번호가 :

  1. 모든 스레드가 스택으로 사용할 수있는 총 메모리는? 예 : -Xss가 256K로 설정되면, 모든 스레드는이 256K 메모리 내에 자체 스택을 작성합니다.

  2. 스레드의 각 스택 크기. 예 : -Xss가 256K로 설정된 경우, 각 스레드는 256K의 스택을 갖게됩니다. 따라서 10 개의 스레드는 모두 2560K를 사용합니다.

대단히 감사합니다.

편집 :

답장을 보내 주셔서 감사합니다. 위의 (2) 시나리오와 같습니다. -Xss는 특정 스레드의 가장 큰 스택 크기를 지정합니다.

그렇다면 후속 질문이 있습니다.이 메모리는 어디에 할당됩니까?

-Xmx 및 -Xms를 사용하여 예약 된 힙 메모리를 지정할 수 있습니다. 예약 된 메모리를 사용하여 스택이 할당됩니까? 또는 네이티브 메모리에서 직접 할당됩니까?

+0

[이 대답] (http://stackoverflow.com/a/17167720/3788176) 동의어는 "-XX : ThreadStackSize"이며 스레드 당 함을 의미합니다. –

+0

https://stackoverflow.com/questions/4967885/jvm-option-xss-what-does-it-do-exactly –

답변

6

그것은 this page on the java command을 인용 스레드 당 스택의 크기입니다 : ...

-Xss크기

스레드 스택의 크기 (바이트)를 설정

그럼 두 번째 부분입니다. 문제. 그러나 모든 스레드 스택 크기를 합산하는 것이 일반적으로 정확하다고 생각하지 않습니다. JVM 구현에 따라 실제 총 스택 크기는 2560K가 아닐 수도 있습니다.

이 사양은 JVM (Java Virtual Machine) 스택이 고정 크기이거나 계산에 필요한만큼 동적으로 확장 및 축소 될 수 있도록 허용합니다. JVM (Java Virtual Machine) 스택의 크기가 고정 된 경우 스택 작성시 각 JVM (Java Virtual Machine) 스택의 크기를 독립적으로 선택할 수 있습니다.

3

각 스레드는 자체 스택을 가지고 있습니다. 대부분의 JVM은 원시 스레드를 사용하며 이러한 스택은 고유 가상 메모리를 사용합니다. 가상 메모리를 사용할 때의 이점은 사용 된 메모리에 접한 페이지 만입니다.

이 메모리는 어디에 할당됩니까?

C 프로그램에서 스레드 스택과 같은 기본 메모리가 있습니다.

-Xmx 및 -Xms를 사용하여 예약 된 힙 메모리를 지정할 수 있습니다. 예약 된 메모리를 사용하여 스택이 할당됩니까?

스택에는 힙이 사용되지 않으므로 아니오입니다.

또는 원시 메모리에서 직접 할당 되었습니까?

예.

관련 문제