Java/History

Java 15, 16 대표 코드

양승길 2024. 12. 16. 17:01

성능 개선을 위한 레코드(Records) 클래스 최적화

public record Person(String name, int age) {
    public Person {
        if (age < 0) {
            throw new IllegalArgumentException("Age cannot be negative");
        }
    }
}

try {
    Person invalidPerson = new Person("Bob", -5); // Age cannot be negative
} catch (IllegalArgumentException e) {
    System.out.println("Exception: " + e.getMessage());
}

가비지 컬렉션 개선

  1. Shenandoah 가비지 컬렉터
    1. Java 15에서는 Shenandoah 가비지 컬렉터가 기본적으로 지원되기 시작했다.
      Shenandoah는 대규모 메모리와 대규모 힙을 가진 애플리케이션의 성능을 향상시키는 것을 목표로 하는 가비지 컬렉터다.
      이 가비지 컬렉터는 일부 애플리케이션에서 힙 메모리 크기가 큰 경우에 더 나은 성능을 제공할 수 있다.
  2. G1 가비지 컬렉터 개선
    1. Java 15에서는 G1(Garbage-First) 가비지 컬렉터도 여러 가지 개선을 받았다.
      이로써 G1 가비지 컬렉터가 더 효율적으로 동작하고 애플리케이션의 응답 시간을 개선할 수 있다.
  3. ZGC 개선
    1. Java 15에서는 Z Garbage Collector(ZGC)에도 몇 가지 개선이 이루어졌다.
      ZGC는 대규모 메모리와 대규모 힙을 가진 애플리케이션에서의 성능을 최적화하기 위해 설계된 가비지 컬렉터다.
      개선 사항은 이 컬렉터의 성능을 더욱 향상시키고 메모리 사용량을 최소화한다.
  4. G1 백그라운드 작업 개선
    1. G1 가비지 컬렉터의 백그라운드 작업이 개선되어 응답 시간에 미치는 영향을 최소화한다.
  5. Epsilon 가비지 컬렉터
    1. Java 15에서는 실험적으로 Epsilon 가비지 컬렉터가 추가되었다.
      이 컬렉터는 실제로 가비지 컬렉션을 수행하지 않고 메모리를 누수시키는 것을 방지하고자 하는 목적으로 사용된다.
      특정 유형의 애플리케이션에 유용할 수 있다.

패턴 매칭 개선

// instanceof의 패턴 확장
if (obj instanceof Integer i && i > 0) {
    // obj가 양의 정수일 때 실행
}

// case의 패턴 확장
String value = switch (obj) {
    case String s -> "String: " + s;
    case Integer i && i > 0 -> "Positive Integer: " + i;
    default -> "Other";
};
반응형

'Java > History' 카테고리의 다른 글

Java 갑작스런 버전 변화, 왜?  (0) 2024.12.16
Java 17 대표 코드  (0) 2024.12.16
Java 12~14 대표 코드  (0) 2024.12.16
Java 11 대표 코드  (0) 2024.12.16
Java 9, 10 대표 코드  (0) 2024.12.16