memostack
article thumbnail
JVM GC(Garbage Collector) 구조
Language/JAVA 2021. 3. 7. 13:28

GC (Garbage Collector) JVM에는 메모리를 자동으로 관리해주는 특징이 있는데, 이 역할을 Garbage Collector(가비지 콜렉터)이 한다. 정확히는 JVM 메모리 중 Heap 영역에서 사용하지 않는 객체를 삭제하여 관리해줌 Stop The World GC에는 stop-the-world 라는 것이 존재하여, 메모리가 관리되는 동안 Java Application이 멈추는 현상을 말한다. stop-the-world가 발생하는 동안 GC 스레드를 제외한 모든 스레드가 멈춤 stop-the-world가 발생하는 시간이 줄이기 위해 JVM 튜닝을 하곤하는데, 튜닝을 위해서는 JVM GC에 대해 살펴볼 필요가 있다. 일반적인 GC 구조 일반적인 GC 구조는 Young Generation과 O..

article thumbnail
JVM 메모리 (Runtime Data Area)
Language/JAVA 2021. 3. 7. 01:36

Runtime Data Area JVM 메모리를 뜻함 Runtime Data Area는 5개 영역으로 나눠짐 Method Area, Heap, Stack, PC Register, Native Method Area Method Area와 Heap은 모든 스레드가 공유하는 공간 Stack, PC Register, Native Method Area는 각각의 스레드가 하나씩 가지는 공간 Method Area (메소드 영역) class data와 static 변수가 저장되는 공간 모든 스레드(Thread)가 공유하는 공간 JVM이 실행될때 생성됨 Heap (힙 영역) new 를 통해 동적으로 생성되는 객체가 저장되는 공간 (또는 배열) Heap에 저장된 데이터는 메모리 관리가 필요한 GC 대상 만약 참조하지 않는..

article thumbnail
JVM과 JVM 아키텍처 (Class Loader, Runtime Data Area, Execution Engine)
Language/JAVA 2021. 3. 7. 00:51

JVM Java Virtual Machine의 약자. Java 프로그램이 플랫폼에 의존하지 않고, 어디서든 동작 가능하도록 하기 위한 Java 가상 머신이다. 단, Java 프로그램은 JVM 위에서 동작하기 때문에, JVM에 의존성을 가짐 C/C++ 언어는 CPU 아키텍처, 운영체제 등 플랫폼 환경에 의존성을 가지기 때문에, 플랫폼이 바뀌면 제대로 동작하지 않는 문제가 있음 (크로스 컴파일을 통해, 타겟 플랫폼에 맞춰서 컴파일을 해줘야 함) Java의 경우 이러한 문제를 해결하기 위해 JVM을 만들었음 JVM 아키텍처 JVM은 아래와 같이 크게 Class Loader, Runtime Data Area(JVM 메모리), Execution Engine 으로 나눠짐 Class Loader Java 바이트 코드..

article thumbnail
자바(JAVA)의 개념 및 특징 정리
Language/JAVA 2020. 5. 29. 14:45

프로그래밍이란? 프로그래밍: 컴퓨터에게 일을 시키기 위해 프로그램을 만드는 행위 컴파일: 사람이 이해할 수 있는 고급 언어를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 일을 뜻 함 컴파일러: 컴파일을 할 수 있는 프로그램 자바의 탄생 1995년 썬 마이크로시스템즈에서 개발한 객체지향 언어 C/C++ 문법을 기본으로하여 개발함 JAVA의 특징 플랫폼에 독립적이다. 컴파일된 동일한 코드는 JVM만 설치되어 있다면, 운영체제에 상관없이 실행할 수 있다 객체지향 프로그램으로 유지보수와 확장성이 좋다. 풍부한 라이브러리가 제공되어 오픈소스와 연동이 쉽다. JVM의 GC(Garbage Collector)에 의해 사용되지 않는 메모리를 자동으로 정리해준다.