JAVA는 C와 달리 개발자가 명시적으로 메모리를 건드리지(참조하지) 않는다. JAVA는 메모리를 Garbage Collection이라는 알고리즘으로 관리하며, 개발자가 메모리를 관리할 필요가 없도록 한다. (직접 관리하면 오히려 더 안좋은 경우가 많다.) Garbage Collection은 말 그대로 '쓰레기를 정리하는 작업'이다. 그리고 JAVA의 메모리 입장에서 '쓰레기'는 곧 객체, 다시 말해서 '필요 없는 객체'이다. 1. GC와 Heap Garbage Collection을 본격적으로 알아보기전에 JVM의 Runtime Area를 떠올려보자(생각이 안나거나, 잘 모르는 사람은 여기를 참고하자.) Runtime Area의 영역들은 스레드가 시작할 때 생성되는 경우가 있는가 하면, JVM이 시작할 ..
C++와 JAVA을 비교하는 것은 대학에서 프로그래밍 언어를 배울 때, 얼핏 배우고 지나갔던 내용이었다. 비슷한 성격(객체지향)을 띄는 언어이지만, 차이점도 극명한 언어이기도하다. 나름의 기준으로 3가지 기준으로 차이점들을 정리해봤다. 아, 그리고 여기에 작성되는 것들이 JAVA와 C++ 차이점의 전부는 아니라는 점 꼭 알아뒀으면 좋겠다. 그리고 나름대로 중요한 것만 뽑았지만... 아닐 수도 있다.. 1. 상속 대학 수업에서 교수가 학생에게 C++과 JAVA의 차이점을 묻는다면, 높은 확률로 학생은 상속에 관련된 차이점을 대답할 것이다. 그정도로 상속에 있어 두 언어의 차이점은 극명한데, JAVA가 C++보다 단순한 상속 체계를 지원한다. 첫째로, C++은 다중 상속을 지원하고 JAVA는 그렇지 않다. ..
JAVA라는 언어를 공부한 적이 있다면, JVM(Java Virtual Machine)에 대해 들어본 적 있을 것이다. 이번 포스팅에서는 평소에 간단하게 공부하고 지나치기 쉬운 JVM에 대해 알아보려고 한다. 그림1. 일반적인 윈도우 프로그램의 실행구조와 JAVA 프로그램의 실행구조 (출처: 자체제작) JAVA라는 언어를 공부하기 위해 어떤 교재를 구매했든, 대체로 맨 앞 챕터에서 볼 수 있는 그림이다. 두 그림의 차이점은 Program과 Operating System(운영체제) 사이에 JVM이라는 것이 존재한다는 점이다. 그림으로 봤을 때는 윈도우 프로그램과 JAVA프로그램의 차이는 오로지 JVM이다. 이러한 JVM이 어떤 기능을 하는지 간략하게 기술하자면... 1. JAVA가 OS에 상관 없이 동작할..