
캐시와 메인 메모리 volatile에 대한 설명에 앞서, CPU의 메모리 참조에 대해서 간단하게 짚고 넘어가자. CPU는 코어당 한번에 하나의 쓰레드를 수행시키는데, 이 때 쓰레드의 작업에서 필요로 하는 데이터는 근본적으로는 메인 메모리인 RAM으로부터 온다. 그러나 CPU의 연산 속도에 비해 RAM은 한참 느리기 때문에 반복 사용되는 데이터를 CPU가 보다 빠르게 얻기 위해 캐시 메모리를 활용한다. 도식을 보면 CPU와 RAM 사이에 캐시 메모리가 자리하고 있는 것을 확인할 수 있다. CPU는 우선적으로 캐시에 사용하고자 하는 데이터가 있는지 확인하는데, L1, L2, L3 캐시 순서대로 확인해보고 캐시에서 데이터를 얻지 못하면 RAM에서 얻어온다. 이 글은 캐시에 대해 깊게 다루는 글은 아니므로 자세..

Garbage Collector가 뭔가요? Garbage는 말그대로 쓰레기, 즉 더 이상 사용하지 않거나 필요하지 않아 버리는 것들을 지칭한다. Java에서도 마찬가지의 의미로 쓰인다. 우리는 필요에 따라 수많은 객체들을 생성해서 사용하는데, 이들 중에 더 이상 참조되지 않는 객체들은 굳이 메모리에 계속 보관할 필요가 없기 때문에 garbage라고 부른다. Java의 JVM은 Garbage Collector(이하 GC)라는 청소부가 있어 이런 garbage들을 인식하고 자동적으로 메모리에서 그런 불필요한 데이터들을 비워준다. GC가 제거해줄 Garbage는 어디에 있나요? JVM의 Runtime Data Area 안에는 Heap Area라는 메모리 영역이 존재한다. JVM 파헤치기에서 보았듯, Heap ..

JVM이란? JVM은 Java Virtual Machine의 약자로, 쉽게 이야기하면 Java 코드의 실행(런타임) 환경이다. Java로 작성한 코드는 모두 JVM이라는 가상 환경 위에서 돌아간다. 흔히 Java를 설치한다고 하면 원하는 버전의 JDK(Java Development Kit)를 설치하게 되는데, 이 안에는 JVM과 여러 Java API들이 포함되어있다. 즉, Java와 JVM은 뗄 수 없는 존재라는 뜻이다. JVM이 주는 이점 1. 한 번 작성하고, 어디서든 실행해라 (Write Once, Run Everywhere) 컴파일된 Java 코드는 실행 시 OS로 바로 전달되지 않고 JVM을 거쳐야 하기 때문에 Java는 OS에 종속적이지 않다는 특징을 갖는다. 반면, JVM은 OS마다 상이하게..
- Total
- Today
- Yesterday