JAVA는 C와 달리 개발자가 명시적으로 메모리를 건드리지(참조하지) 않는다. JAVA는 메모리를 Garbage Collection이라는 알고리즘으로 관리하며, 개발자가 메모리를 관리할 필요가 없도록 한다. (직접 관리하면 오히려 더 안좋은 경우가 많다.) Garbage Collection은 말 그대로 '쓰레기를 정리하는 작업'이다. 그리고 JAVA의 메모리 입장에서 '쓰레기'는 곧 객체, 다시 말해서 '필요 없는 객체'이다. 1. GC와 Heap Garbage Collection을 본격적으로 알아보기전에 JVM의 Runtime Area를 떠올려보자(생각이 안나거나, 잘 모르는 사람은 여기를 참고하자.) Runtime Area의 영역들은 스레드가 시작할 때 생성되는 경우가 있는가 하면, JVM이 시작할 ..
JAVA라는 언어를 공부한 적이 있다면, JVM(Java Virtual Machine)에 대해 들어본 적 있을 것이다. 이번 포스팅에서는 평소에 간단하게 공부하고 지나치기 쉬운 JVM에 대해 알아보려고 한다. 그림1. 일반적인 윈도우 프로그램의 실행구조와 JAVA 프로그램의 실행구조 (출처: 자체제작) JAVA라는 언어를 공부하기 위해 어떤 교재를 구매했든, 대체로 맨 앞 챕터에서 볼 수 있는 그림이다. 두 그림의 차이점은 Program과 Operating System(운영체제) 사이에 JVM이라는 것이 존재한다는 점이다. 그림으로 봤을 때는 윈도우 프로그램과 JAVA프로그램의 차이는 오로지 JVM이다. 이러한 JVM이 어떤 기능을 하는지 간략하게 기술하자면... 1. JAVA가 OS에 상관 없이 동작할..