본문 바로가기

Shorts3

G1GC의 변경된 GC 구조 G1GC(Garbage First Garbage Collector)의 변경된 GC 구조G1GC는 Java 9 이후부터 기본 GC로 채택된 방식으로, 기존 GC의 단점을 보완하고 짧고 예측 가능한 GC 지연 시간을 제공하기 위해 설계된 가비지 컬렉터입니다. 이전에는 CMS나 Parallel GC가 주로 사용됐지만, 대규모 애플리케이션 환경에서 짧은 응답 시간과 예측 가능한 성능을 요구하는 경우 G1GC가 더 적합합니다. 기존 GC의 한계기존 GC는 힙을 Young과 Old로 나누고, 세대별로 GC를 수행하는 구조였지만, 여전히 stop-the-world로 전체를 멈춰야 하는 상황이 발생했습니다.Serial GC / Parallel GC: 멀티코어 활용에 한계가 있으며, Full GC 중에는 전체 애플리케.. 2025. 4. 18.
public static final static final자바에서 static 변수는 클래스에 속한 변수로, 객체를 생성하지 않아도 클래스 이름만으로 접근할 수 있습니다. 프로그램이 실행되면 JVM의 메소드 영역에 로드되고, 프로그램이 종료될 때까지 유지됩니다. 이 때문에 전역에서 공유되는 값이나 설정값을 저장할 때 자주 사용됩니다.여기에 final 키워드를 함께 쓰면, 해당 변수는 한 번만 초기화되고 그 이후에는 값을 변경할 수 없는 상수가 됩니다. 즉, static final은 전역 상수를 의미합니다. public 키워드를 붙이는 이유이는 보통 상수를 정의할 때 다른 클래스나 패키지에서도 접근 가능하게 하기 위함입니다.예를 들어, 다음과 같은 선언은 자바에서 매우 일반적인 형태입니다.public static final int TIMEO.. 2025. 4. 18.
String Costant Pool String Constant Pool자바에서 String은 불변 객체(Immutable Object)입니다. 한 번 생성되면 내부 값을 바꿀 수 없어, 스레드에 안전하며 공유에 적합합니다. 하지만 String 객체는 프로그램 전반에 걸쳐 자주 사용되므로, 무분별하게 생성하면 메모리 낭비가 발생합니다. 이 문제를 해결하기 위해 JVM은 String Constant Pool이라는 별도의 메모리 공간을 제공합니다. 이 영역은 중복된 문자열 리터럴을 재사용하여 메모리 사용을 최적화합니다. 리터럴(literal)로 선언된 문자열은 String Constant Pool에 저장되며, 동일한 값이 있으면 해당 참조를 재사용합니다. String 리터럴 vs new String()String s1 = "hello";Str.. 2025. 4. 18.