본문 바로가기

Development/Programming

Java의 Stack와 Heap 메모리에대해서...

일반적으로 Stack과 Heap 메모리 대해서 조사하게 되면 


Stack은 컴파일시 크기가 결정되어 있는 요소들의 저장공간 (예시 : char variable[size])

Heap은 런타임시 크기가 결정되는 요소들의 저장공간... (예시 :char *variables = new char[30])


이런식으로 설명한다. 이런 이야기는 대학교때부터 들은것이고 대략적으로 알고 있었지만....

Java는 약간 다르다라고 얼핏들은적이 있지만 거기에 대해 고민을 해본적은 없었는데 갑자기 회의를 하다가 이야기가 나와서 한번 알아봤다.


Java에서의 stack과 heap은 다르다~!!!!!! (여기서 참고했습니다.~!)


1. heap메모리가 자바객체를 저장하는 동안 stack에서는 local 변수와 function call을 저장합니다. 

2. member, local, class 변수는 항상 Heap에서 생성을 합니다.

3. recursion method call을 하는 경우에는 신속히 statkc을 빨리 채웁니다. (신속한 처리와 이런경우 stack이 적합해서 그렇지 않을까..라는 생각이 듭니다.)

4. stack의 크기는 heap에 비해 매우 저장공간이 작습니다.

5. thread의 경우 heap에 생성된 객체는 모든 Thread가 공유하지만 stack의 경우 thread의 개인 메모리라고 보시면 됩니다.


ps. 아직도 Java에대해 알아봐야 될게 많은것 같고 JVM에대해서 조금더 알아봐야 되지 않을까라는 생각이 들어 시간이 되면 틈틈히 알아봐야겠다.~!