본문 바로가기

프로그래밍언어15

java8이전과 이후의 garbage collector의 동작과 종류 목차 0. 사전 용어 정리 & GC가 중요한 이유 1. Minor gc와 major gc. 2. 다양한 GC 알고리즘 0. 사전 용어 정리 - Garbage collector ( GC ) : 힙메모리의 OOM 에러를 막기 위해 참조되지 않는 객체들을 제거하는 작업 - Eden space : 객체가 힙메모리에 이제 막 할당되어 저장되는 메모리 공간. - From Survivor space (S0): Eden 영역에서 GC가 수행된 후 살아남은 객체들이 저장됨 - To Survivor space (S1): From 영역에서 살아남은 객체들이 옮겨지고, From영역으로 전환됨. 객체가 살아남으면 age가 1씩 증가함. - Tenured Generation : 위 3개 영역에서의 객체가 설정된 임계치의 age를.. 2023. 3. 26.
싱글톤과 플라이웨이트 패턴 플라이웨이트 패턴과 싱글톤 패턴은 모두 객체 생성을 최적화하는 구조적 디자인 패턴입니다. 그러나 두 패턴의 목적과 구현 방법, 사용 시점 등에 차이가 있습니다. 목적 플라이웨이트 패턴: 여러 개의 객체를 공유하여 메모리 사용을 최소화하고 성능을 개선하는 것이 목적입니다. 객체의 내부 상태는 불변(immutable)적이어야 하며, 내부 상태가 동일한 객체는 공유됩니다. 싱글톤 패턴: 전체 시스템에서 단 하나의 객체만 생성하여 사용하는 것이 목적입니다. 모든 클라이언트는 동일한 객체 인스턴스에 접근합니다. 구현 방법 싱글톤 패턴: 객체를 생성하는 생성자를 private으로 선언하여 외부에서 직접 객체를 생성할 수 없도록 합니다. 객체를 생성하는 정적 메서드를 제공하고, 이 메서드에서 객체가 이미 생성되어 있.. 2023. 3. 13.
CPU L1, L2 캐시와 자바 volatile 캐시는 프로세서 내부에 있는 빠른 메모리로, 일반적으로 L1 캐시와 L2 캐시가 있습니다. L1 캐시는 프로세서 코어에 직접 연결되어 있으며, L2 캐시는 코어들 사이를 공유하는 공유 버스에 연결되어 있습니다. 캐시는 메모리보다 훨씬 빠르지만 용량은 작습니다. 반면에, 메모리(RAM)는 CPU보다 느리지만 용량이 크기 때문에, 프로그램에서 사용하는 데이터를 모두 캐시에 저장할 수 없습니다. 때문에, 프로그램이 변수를 읽거나 쓸 때, 해당 변수의 값을 캐시에서 읽어오거나 캐시에 저장할 수도 있습니다. 자바에서 volatile 키워드는 이러한 캐시와 메모리의 동기화를 보장하는 역할을 합니다. volatile 키워드가 붙은 변수는, 쓰기가 발생하면 해당 변수의 값을 바로 메모리에 써넣습니다. 또한, 다른 코어.. 2023. 2. 18.
자바의 Object Class 1.toString() 객체를 toString 2.equals() 두 객체가 참조하는 변수의 값을 비교함. 일반 == 은 메모리 주소를 비교함 3.clone() cloneable 인터페이스를 구현한 class에서 사용가능하다. super.clone()만 하게 된다면 shallow copy로 진행됨. // ㅊ deep copy를 하고 싶다면 직접 구현해야함. 4. etc 2023. 2. 10.