2010-02-16 3 views
0

어디에서나 JVM 스택 크기를 늘리는 방법에 대해 계속 읽고 있습니다 (즉, 더 깊은 재귀를 허용하기 위해).Java : 스택 크기를 줄이면 빈번한 메소드 호출이 빨라 집니까?

하지만 내 자신에게 묻는 것은 스택 크기가 빨라지는 방법 호출을으로 줄이는 것입니까?

아마 나의 이해는 잘못이지만, 각 스택의 할당 속도 (하지은 재귀 메서드 호출을 위해이) 그것의 크기에 따라 달라집니다 나는 가정합니다.

누군가 나를 벤치 마크로 안내 할 수 있습니까? 아니면 적어도이 주제에 관한 정보를 제공 할 수 있습니까?

감사합니다.

답변

1

Java의 각 플랫폼의 가상 시스템 구현은 다를 수 있지만 일반적으로 이것은 중요한 영향을주는 요인이 될 수 없습니다. 메모리 할당은 매우 일반적인 작업이며 고도로 최적화 된 것으로 보입니다.

예를 들어 스택 공간을 나타 내기 위해 (pointer, size) 튜플 목록을 사용하는 구현이 쉽습니다. 이제는 스택의 size과 예약 된 공간의 시작을 가리키는 pointer을 말할 필요가 있습니다. 아무리 많은 공간이 있더라도 상관 없습니다.

+0

따라서 큰 성능 문제가 아니라면 최대 스택 크기가 제한되어 (기본적으로), 수천 번의 재귀 호출 후에도 메서드 호출이 "실패"하는 경우가 있습니까? –

+0

그 이유는 여러 가지가있을 수 있습니다. 예를 들어, JVM의 모든 스레드는 자체 스택을 가져옵니다. 스택 크기는 보유 할 수있는 스레드 수를 제한합니다. 너무 큰 경우 메모리가 부족하여 새 스레드를 할당 할 수 없습니다. –

+0

@ java.is.for.desktop : 최대 스택 크기는 컴퓨터에서 메모리가 빨리 소모되지 않도록 제한되어야합니다. 속도는 문제가되지 않습니다. 전체적인 메모리 소비가 한계의 원인입니다. –

관련 문제