자바 메모리 구조 이전 포스트에서 자바의 메모리 구조는 크게 메소드 영역, 힙 영역, 스택 영역으로 나뉘어 있다는 것과, 메소드 영역이 뭔지 살짝 알아봤다. 이번에는 힙 영역과 스택 영역은 뭔지, 각각 어떤 역할을 하는지, 좀 헷갈리니까 친절히 코드로 비교도 해볼까 한다. 2. 스택 영역(Stack Area) 스택 영역에는 지역변수와 매개변수가 저장된다. 그렇담 지역변수는 뭐고, 매개변수는 뭔가여. 한글로 접하니까 오히려 헷갈리는데 지역변수 = 로컬변수(local variable), 매개변수 = 파라미터(parameter)라고 들으면 아~~ 뭐야. 할 것임. 이래도 모르겠으면 로컬변수는 메소드 내에서 선언된 변수들, 매개변수는 메소드에 아규먼트로 넘겨주는 값들로 이해하고 넘어가자. 로컬변수와 매개변수의 ..
다시 힘을내어 포스팅을 해보려고 한다. 아자아자! 비록 구글 너가 애드센스 승인을 빨리 안해주지만 나는 힘을내어 포스팅할거야. 오늘 다루려고 하는 것은 자바의 메모리 구조이다. 메모리 구조가 어떻게 되어 있고, (메모리 구조가 여러 영역으로 나누어져 있는데 그 영역이) 어떻게 다른지를 아주 짧고 간단하게 스쳐지나가듯 짚도록 하겠다. 자바의 메모리 구조 이전 포스트였던가. 자바 가비지 컬렉터를 이야기하면서 JVM이 실행되면 OS가 JVM에게 필요한 메모리를 할당해준다고 했다. 컴퓨터 프로그램이 실행되기 위해 필요한 메모리를 우리는 '메인 메모리'라고 한다. 우리말로는 주기억장치쯤 되시겠다. 물리적으로는 우리가 램(RAM)이라고 부르는 아이다. 이 메인메모리를 관리하는게 OS이고, JVM(자바 버추얼 머신!..
자바의 가비지 컬렉터(Garbage Collector) 즉, 쓰레기 수집 기능을 이해하려면 메모리에 대한 이해가 먼저다.1. 자바 실행 프로그램인 JVM과 메모리메모리는 OS가 관리하는데, 모든 프로그램들은 OS 위에서 돌아간다. 그리고 프로그램이 돌아가려면 당연 메모리가 있어야 한다. 때문에 프로그램들은 OS에게 "나 메모리좀 줘" 하고 요청을 한다. 자바의 실행 프로그램인 JVM도 예외는 아니다. 이 친구도 메모리가 필요하면 OS에게 요청해야한다. 메모리좀 달라고. 그런데 OS가 처음부터 자기가 가진 메모리 전부를 줘버리면, 다른 프로그램들에게 줄 메모리가 없게 된다. 때문에 각 프로그램에게 메모리의 일정부분만 빌려주는(?) 방식으로 관리가 된다. A 프로그램 JVM B 프로그램 - 이렇게 OS가 메..