Garbage Collection 이란?가비지 컬렉션은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능이다. JVM에서 제공하는(JVM 중에서도 Execution Engine) 주요 기능 중 하나이다. 참고로 가비지 컬렉션은 JVM만의 기능은 아니다. Unreachable ObjectStack frame이 Stack에서 pop되면 해당 메소드가 참조하던 레퍼런스도 사라진다. 이때 heap에는 객체 데이터가 그대로 남게 되는데, 이를 unreachable object라 한다. 이러한 unreachable object는 가비지 컬렉터의 대상이 된다. 가비지 컬렉션 주요 과정가비지 컬렉터가 스택의 모든 변수를 스캔하면서 각각 어떤 객체를 참..
Runtime Data Areas는 JVM이 운영체제로부터 할당받는 메모리 영역을 의미한다. JVM의 클래스 로더가 메모리에 바이트코드를 올리면, JVM의 Execution Engine은 JVM 메모리에 올라온 바이트코드들을 명령어 단위로 하나씩 가져와서 기계어로 변환시킨다. 변환된 기계어는 JVM의 메모리구조(Runtime Data Area)의 각 영역에 배치되며 GC와 함께 실행된다. Runtime Data Areas (5개) * 오라클(과거의 썬 마이크로시스템즈)의 HotSpot JVM 기준 모든 Thread 공유 1) Method(Static) Area Method Area, Class Area, Code Area, Static Area 라고도 불린다. JVM의 Execution Engine(실행..
자바는 OS와 독립적으로 실행시킬 수 있다. 그 이유는 JVM이 OS에 의존적이기 때문인데, 즉, OS마다 다른 JVM이 존재하기 때문이다. C/C++는 링커, 로더를 포함한 운영체제 바로 위에서 직접적으로 실행되므로, 빠르고 가볍다. 하지만 개발에 있어서 그만큼 메모리 회수 등 개발자가 신경써야 할 부분이 많다. 또한 C/C++ 등의 전통적인 언어는 컴파일 플랫폼(CPU 아키텍처 16bit, 64bit 등 및 OS)에 따라 자료형형의 크기가 변한다. 그래서 윈도우에서 컴파일한 C/C++파일은 리눅스에서 안 돌갈 수도 있다. JVM은 이러한 문제를 근본적으로 해결한다. 자바 소스코드(.java)가 자바 컴파일러(javac.exe)를 거치고 나면, 자바 바이트코드(.class)를 생성하는데, 이 자바 바..
- Total
- Today
- Yesterday
- helm
- 코틀린
- spring
- GitOps
- 컨트롤러
- Kubernetes
- RDB
- 우분투
- 쿠버네티스
- go
- github actions
- argocd
- db
- docker
- Java
- Non-Blocking
- Stream
- golang
- ubuntu
- K8s
- kafka
- CICD
- jvm
- LFCS
- 카프카
- rolling update
- Controller
- Linux
- container
- ci/cd
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |