자바 8 새로운 기능 의 문자열 을 다시 소개 합 니 다.

8 월 19 일 에 Oracle 은 JDK 8u 20 을 발 표 했 는데 JDK 8u 20 은 자바 컴 파일 러 업데이트,실행 시 API 를 통 해 MinHeapFreeRatio 와 MaxHeapFreeRatio 매개 변수,새로운 GC 변조 안내 문 서 를 수정 하 는 것 을 지원 합 니 다.그러나 많은 새로운 기능 중에서 가장 기대 되 는 것 은 문자열 의 무 게 를 줄 이 는 것 입 니 다(String Deduplication).메모리 사용량 을 줄 이 는 것 은 영원한 화제 입 니 다.자바 응용 에 서 는 String 대상 이 30%의 메모 리 를 사용 하 는 것 을 자주 볼 수 있 습 니 다.자바 에서 가장 자주 사용 하 는 대상 중 하나 입 니 다.새로운 문자열 의 무 게 를 줄 이 는 기능 은 String 대상 의 메모리 사용량 을 줄 이 는 데 도움 이 됩 니 다.현재 이 기능 은 G1 쓰레기 수집 기 에 만 적용 되 며 기본적으로 켜 지지 않 습 니 다.
Fabian Lange 는 문자열 의 무 거 운 특성 을 제거 하 는 실현 방식 을 설명 합 니 다.
 
  
String , String 。 String , 。 , String String 。 , 。 , String , 。

이 어 Fabian Lange 는 코드 를 통 해 문자열 의 무 거 운 특성 을 제거 하 는 신기 한 효 과 를 설명 했다.우선 자바 8 업데이트 20 을 사용 하여 인자-Xmx256m-XX:+UseG1GC 를 통 해 다음 코드 를 실행 합 니 다.
 
  
public class LotsOfStrings {

  private static final LinkedList LOTS_OF_STRINGS = new LinkedList<>();

  public static void main(String[] args) throws Exception {
    int iteration = 0;
    while (true) {
      for (int i = 0; i < 100; i++) {
        for (int j = 0; j < 1000; j++) {
          LOTS_OF_STRINGS.add(new String("String " + j));
        }
      }
      iteration++;
      System.out.println("Survived Iteration: " + iteration);
      Thread.sleep(100);
    }
  }
}


코드 는 30 번 순환 한 후에 OutOf Memory Error 이상으로 실 행 됩 니 다.매개 변수-XX:+UseStringDeduplication-XX:+PrintStringDeduplication Statistics 를 사용 하여 문자열 의 특성 을 다시 시작 하면 프로그램 이 일정 시간 더 실 행 될 수 있 습 니 다.JVM 로 그 를 통 해 전체 리 셋 과정 에 대한 상세 한 정 보 를 알 수 있 습 니 다.독자 스스로 테스트 하 세 요.
마지막 으로 Fabian Lange 는 문자열 이 머 무 르 는 것 과 문자열 이 머 무 르 는 것 의 차 이 를 설명 했다.문자열 이 머 무 르 는 것 을 제외 하고 전체 String 인 스 턴 스 를 재 활용 한 것 이 고 문자열 은 String 에 대한 문자 배열 일 뿐이다.
(전문 완료)

좋은 웹페이지 즐겨찾기