2014-04-16 2 views
2

Integer 및 Integer Array가 Java의 스택/힙에 저장되는 방법을 알고 싶습니다. 누군가가 나를 가리킬 수있는 링크가 있습니까? 아니면 누군가 나에게 설명해 주시겠습니까?스택/힙의 정수 및 정수 배열 스토리지

업데이트 1 : 그리고 이것은 정수 및 정수 배열이 Java의 메서드에 인수로 전달되는 방식에 어떤 영향을 미칩니 까?

당신

답변

0

변수는이 객체에 대한 참조와 지역 변수의 경우에는 스택에 저장이 참조하지만, 오브젝트의 데이터 힙에 저장 할 수있는 점을 포함 감사드립니다.

현재, 예를 들어, 자세한 내용을보실 수 있습니다 : link

enter image description here

0

방법 변수는 스택에 저장됩니다. 한편, 객체는 아래 이미지와 같이 힙에 저장됩니다. 그런 이유로 StackOverFlowException을 얻는다면 이는 메서드에서 너무 많은 변수를 선언했거나 재귀 호출에서 너무 많은 메서드를 호출하고 있다는 것을 의미합니다. Java 힙 공간 오류가 발생하는 경우, 사용자가 수행하는 것보다 많은 오브젝트를 작성한다는 의미입니다. 로컬 범위 내에서 변수 (방법)이 스택에 넣어 도착를 선언 할 때마다 스택 및 힙 설명은 , 나는 this link

enter image description here

0

좋습니다.

즉 : Type myVariable은 새 변수 공간을 해당 메소드 스택 프레임으로 푸시하지만 아직 초기화되지 않았으므로 사용할 수 없습니다.

변수에 값을 할당하면 해당 값이 스택의 예약 된 공간에 저장됩니다.

이제 까다로운 부분이 있습니다. 유형이 기본 유형 인 경우, 값은 사용자가 지정한 값을 포함합니다. 예를 들어, int a = 55은 말 그대로 55로 값을 넣습니다.
그러나 형식이 Object가 아닌 프리미티브가 아닌 경우, 스택에 넣은 값은 실제로 메모리 주소입니다. 이 메모리 주소는 실제 Object가 저장되는 힙의 위치를 ​​가리 킵니다.

개체가 생성시 힙에 배치됩니다.

예는

private void myMethod() 
{ 
    Object myObject = new Object(); 
} 

우리는 변수를 선언하고, 그래서 우리는 스택 프레임에 공간을 얻을. 형식은 Object이므로이 값은 개체가 만들어 질 때 할당 된 힙의 공간을 가리키는 포인터가됩니다.