java 2

[Java] 튜닝의 마지막 단계 GC 알아보기

📍GC(Garbage Collection)란?프로그램이 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 알아서 해제하는 것으로 GC는 메모리 관리 기법 중 하나다.여기서 동적으로 할당했던 메모리 영역은 프로그램 런타임에 사용되는 Heap 영역 메모리를 뜻하고,필요 없게 된 영역은 어떤 변수도 가리키지 않게 된 영역을 의미한다.C,C++의 경우 Heap 영역의 메모리를 관리하기 위해 코드 레벨에서 할당 받고, 해제해야 했다. (포인터)이렇게 수동으로 해제해야하는 경우 할당받은 메모리 영역을 제대로 해제하지 않아 memory leak이 발생하기도 한다.다행이 필자가 사용하는 Java나 Javascript 같은 언어에서는 동적 메모리 영역 해제를 GC가 대신 해준다.   📍GC가 왜 필요할까?또 어..

java 2025.02.05

[Java] Java 용어들을 알아보자. (JRE, JDK, JVM)

📍개요카카오 탐방 중 JVM과 GC와 같은 Java의 기본적인 원리가 무엇인지 설명할 수 있느냐는 질문에 말문이 막혔다.자바 파일을 운영체제 상관없이 사용하게 도와주는 프로그램이라는 것만 알고 그 이상 설명할 수 없었던 나 자신에게 충격받고, 기본적인 내용을 다시 한 번 정리해보려 한다.   📍JVM(java virtual machine)이 무엇일까?컴퓨터들은 모두 같은 기계어를 쓰는 게 아니다.C언어로 짜서 컴파일한 기계어인데 윈도우에서 돌아가게 컴파일한 것은 맥이나 리눅스에서는 안 도는 현상이 발생한다.그럼 어떻게 해야할까? 프로그램이 돌 환경을 생각해서 그 환경에 맞도록 기계어를 번역해줘야 한다. 그렇게 매우 번거롭다.이런 문제를 해결하기 위해 만들어진 게 자바의 JVM이다.쉽게 말하자면 각 종..

java 2025.02.01