본문 바로가기
728x90

개발공부27

[JVM GC] GC 종류와 동작 방식과 G1GC 튜닝 포인트 1. JVM GC 동작 순서 GC를 수행할 때에는 아래와 같이 Three-Step으로 이루어진다. (1) Heap 영역에 존재하는 객체들에 대하여 접근 가능 여부를 확인한다. (2) GC Root에서 시작하여 참조값을 따라가며 접근 가능한 객체들에 Mark 하는 과정을 진행한다. (3) Mark되지 않은 객체들은 제거(Sweep) 대상이 되고 해당 객체들을 제거한다. * 아래는 GC Root에서 접근 가능한 객체를 판단하는 과정에 대한 설명 GC Root에서 참조하고 있는 객체를 찾고 또 그 객체가 참조하는 객체를 찾아가며 Mark 한다. Mark되지 않은 객체는 접근 불가능한 객체(Unreachable Object)로 판단하고 제거(Sweep) 된다. Sweep 과정에 의해 삭제되면 메모리 단편화가 발.. 2022. 1. 5.
[JVM GC] Garbage Collector에 대하여 1. GC(Garbage Collector) 이름에서 보이는 바와 같이 GC란 JVM 메모리를 자동으로 관리해주는 역할을 한다. (쓰레기 수집) 좀 더 전문적으로 이야기하면 JVM 메모리 중 Heap 영역에서 사용하지 않는 객체를 삭제하여 관리해주는 기능을 한다. 1.1 STW (Stop The World) GC를 하며 메모리가 관리되는 동안 자바 어플리케이션이 멈추는 현상이 있는데 이를 Stop The World라고 부른다. 이 때, GC 스레드를 제외한 모든 스레드는 멈추게 된다. 2. GC 구조 일반적으로 GC구조(단일/병렬/CMS)는 Young 영역과 Old 영역으로 나뉜다. 2-1. Young Generation Young 영역은 크게 3가지로 나뉜다. Eden 영역, Survivor1 영역, .. 2022. 1. 4.
[JVM ] JVM 메모리 (Runtime Data Area) Runtime Data Area : JVM 메모리를 뜻 한다. 이 영역은 5개의 영역으로 나뉘는데 아래와 같다. Method Area Heap Stack PC Register Native Method Area 이 중, Method Area와 Heap 영역은 모든 스레드가 공유하는 공간이고 나머지 Stack, PC Register, Native Method Area의 경우는 각 스레드가 하나 씩 가지고 있는 공간이다. 1. Method Area (메소드 영역) - class data와 static 변수가 저장되는 공간 - 모든 스레드가 공유하는 공간 - JVM이 실행될 때 생성 됨 2. Heap (힙 영역) - new를 통해 동적으로 생성되는 객체가 저장되는 공간 - Heap에 저장된 데이터는 메모리 관리.. 2022. 1. 4.
[Java] 14. 객체 간의 상속 1. 클래스 상속 - 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현한다. - 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할 때 기존 클래스를 상속함. - 상속하는 클래스 : 상위 클래스, parent class, base class, super class라고 부름 - 상속받는 클래스 : 하위 클래스, child class, derived class, sub class라고 부름 상속의 문법 class B extends A{} - extends 키워드 뒤에는 단 하나의 클래스만 올 수 있음 - 자바는 단일 상속만을 지원 함 2. 상속을 구현하는 경우 - 상속 클래스는 하위 클래스보다 더 일반적인 개념과 기능을.. 2021. 12. 3.
[Java] 13. 객체 배열을 구현한 클래스 - ArrayList 1. java.util 패키지에서 제공되는 ArrayList - 기존 배열 선언과 사용 방식은 배열의 길이를 정하고 요소와 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 함. - 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 함. - ArrayList는 객체 배열을 좀 더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스 - 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용할 수 있음. 2. ArrayList의 주요 메서드 3. ArrayList 예제 package ch23; import java.util.ArrayList; import ch21.Book; public class ArrayListTest { pu.. 2021. 12. 1.
[Java] 12. 자료를 순차적으로 관리하는 방법 - 배열(Array) 1. 배열이란? - 동일한 자료형의 순차적 자료 구조 - 인덱스 연산자[]를 이용하여 빠른 참조 가능 - 물리적 위치와 논리적 위치가 동일 - 배열의 순서는 0부터 시작 - 자바에서 객체 배열을 구현한 ArrayList를 많이 활용함 2. 배열 선언과 초기화 - 배열 선언하기 ex) int[] arr1 = new int[10]; ex) int arr2[] = new int[10]; - 배열은 선언과 동시에 자료형에 따라 초기화 된다. (정수는 0, 실수는 0.0, 객체는 null) - 필요에 따라 초기값을 지정할 수 있다. ex) int[] numbers = new int[] {10, 20, 30}; // 개수 생략해야 함 ex) int[] numbers = {10, 20, 30} // new int[].. 2021. 11. 29.
728x90