본문 바로가기
728x90

개발공부/Java26

[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.
[Java] 11. static과 싱글톤 패턴 예제 설명에 따른 객체를 구현하여 테스트 코드가 실행되도록 구현해보기. 자동차 공장이 있다. 자동차 공장은 유일한 객체이고, 이 공장에서 생산되는 자동차는 제작될 때마다 고유의 번호가 부여된다. 자동차 번호가 10001부터 시작되어 자동차가 생산될 때마다 +1 번호가 붙도록, 다음 CarFactoryTest.java 테스트 코드가 수행되도록 자동차 공장 클래스, 자동차 클래스를 구현하여라. > 정답은 맨 아래 # CarFactoryTest.java package ch19; public class CarFactoryTest { public static void main(String[] args) { CarFactory factory = CarFactory.getInstance(); Car mySonata = f.. 2021. 11. 28.
728x90