Amazon Corretto 8용 패치 목록
이 섹션에는 Amazon Corretto 8용 OpenJDK에 적용된 모든 패치 목록이 나옵니다. OpenJDK 프로젝트의 문제로 연결되는 링크도 제공합니다.
- [C8-1] 기본 호출의 오랜 실행에 의해 G1 GC 호출이 중단될 때 조기 OutOfMemoryException을 예방합니다.
-
G1 GC를 사용하는 프로그램은 Java 힙이 가득 채워지지 않았을 때라도 의사 메모리 부족(OOM) 예외가 발생할 수 있습니다. 오래 실행되는 기본 호출을 기다리던 스핀 루프가 2회 만에 포기했을 때 이 현상이 발생했습니다. 이 작은 패치는 이 루프가 소요되는 만큼 장시간 대기하도록 합니다. 일반적으로 몇 번 더 시도하면 충분합니다. 최악의 경우 결국 전체 GC가 발생하고(JDK-8137099 때문에) 문제도 해결합니다. 패치에는 단위 테스트가 2회 이상 필요하며 패치가 있는 경우에만 성공합니다. 설명은 JDK-8137099
를 참조하세요. - [C8-2] OpenJDK 10의 백 포트, JDK-8177809
수정: “File.lastModified()에 밀리초가 손실됩니다(항상 000으로 끝납니다)”. -
이 패치는 파일의 최종 수정 타임스탬프를 보고하는 방식에서 비일관성을 제거합니다. 사용자가 초 단위의 정밀도를 받아보도록 빌드 플랫폼과 Java 메서드에서 동작을 표준화합니다. JDK-8177809
를 참조하세요. - [C8-3] OpenJDK9의 백 포트, JDK-8150013 수정, “ParNew: Prune nmethods 정리 가능한 목록”.
-
이 패치는 Parallel 및 CMS 가비지 수집기에 대한 일시 중지 지연 시간을 줄여줍니다. 중복 코드 검사를 줄임으로써 GC “루트 스캐닝” 속도가 최대 세 자릿수까지 증가합니다.
- [C8-4] OpenJDK 9의 백 포트, JDK-8047338
수정: “javac가 함수 서술사 획득을 위하여 비구성원 메서드를 올바로 필터링하지 않고 있습니다.” -
이 패치는 함수 인터페이스가 예외가 확장되는 예외를 발생시킬 때 컴파일 시간 오류를 야기하던 컴파일러 버그를 수정합니다.
- [C8-5] OpenJDK 10의 백 포트, JDK-8144185
수정: “javac가 잘못된 RuntimeInvisibleTypeAnnotations 길이 속성을 생성합니다.” -
이 문제 때문에 일부 올바른 입력 프로그램에서 Findbugs, JaCoCo, Checker Framework가 실패합니다.
- [C8-6] 문자열 테이블 증가를 기반으로 G1에서 문자열 테이블 정리를 트리거합니다.
-
이 패치는 Java 힙 사용만이 아닌 문자열 테이블 증가를 바탕으로 문자열 테이블 항목 정리에 필요했던 “혼합” G1 모음을 트리거합니다. 후자는 독립된 측정이며 일부 애플리케이션에서는 매우 드물게 혹은 결코 트리거하지 않을 수 있습니다. 그러면 문자열 테이블은 상한 없이 증가할 수 있고, 이것은 실질적인 기본 메모리 누수입니다. JDK-8213198
을 참조하세요. - [C8-7] OpenJDK 9의 백 포트, JDK-8149442
수정: “MonitorInUseLists는 기본적으로 켜져야 하고, 유휴 모니터 축소가 너무 오래 걸립니다.” -
이 패치는 스레드 집약도가 큰 애플리케이션의 성능 병목 제거를 기본 설정으로 만듭니다. MonitorInUseLists를 활성화하면 전체 모니터 대신 잠재적으로 사용 중인 모니터를 더욱 효율적으로 축소할 수 있습니다.
- [C8-8] OpenJDK 11의 백 포트, JDK-8198794
수정: “libnuma 2.0.3으로 Cassandra 3.11.1 시동 시 핫스팟이 충돌합니다.” -
이 패치는 Cassandra 3.11.1이 시동 시 충돌하지 않도록 방지합니다.
- [C8-9] OpenJDK 11의 백 포트, JDK-8195115
수정: “G1 Old Gen MemoryPool CollectionUsage.used 값이 혼합 GC 결과를 반영하지 않았습니다.” -
이 패치가 없으면 G1 GC를 사용할 때 JMX를 써서 힙이 얼마나 가득한지 판단할 수가 없습니다.
- [C8-10] Class.getSimpleName() 및 Class.getCanonicalName()의 속도를 높여줍니다.
-
암기는 이러한 기능의 속도를 대폭 향상합니다. 이 패치에는 정확성 단위 테스트가 들어 있습니다. JDK-8187123
을 참조하세요. - [C8-11] OpenJDK9에서 JDK-8068736의 백 포트, “실행 파일/Field.declaredAnnotations에서 동기화 방지” 수정.
-
스레드 동기화를 방지하는 결과 캐싱으로 실행 파일/Field.declaredAnnotations()의 성능을 개선합니다.
- [C8-12] OpenJDK 9의 백 포트, JDK-8077605
수정: “정적 필드 초기화가 javac에 무한 반복을 야기합니다.” - [C8-13] JDK-8130493 수정: “javac가 주석 프로세서에서 잘못된 클래스를 자동으로 무시합니다.”
-
javac가 주석 프로세서에서 잘못된 클래스 파일을 자동으로 받아들이고 종료 코드 0을 반환했습니다. 이 패치가 있으면 javac가 오류 메시지를 보고하고 0이 아닌 종료 코드를 반환합니다.
- [C8-14] jmap 도구에 대한 오류 메시지가 개선되었습니다.
-
대상 프로세스에 반응이 없을 때 추가적인 접근방식을 제안하는 오류 메시지가 업데이트되었습니다. JDK-8213443
을 참조하세요. - [C8-15] JDK-8185005 수정: “ThreadMXBean.getThreadInfo(long ids[], int maxDepth)의 성능을 개선합니다.”
-
이 패치는 OS 스레드 ID에서 Java Thread 인스턴스를 찾는 JVM 내부 함수의 성능을 개선합니다. 이로써 getThreadInfo(), getThreadCpuTime(), getThreadUserTime() 같은 여러 ThreadMXBean 호출에 유용합니다. 이렇게 상대적인 성능을 개선하면 선형 검색 대신 해시 테이블 검색으로 대체되므로 JVM의 스레드 수가 함께 증가합니다.
- [C8-16] OpenJDK 12의 백 포트, JDK-8206075
수정: “x86에서는 브랜치 대상으로 사용되는 언바운드 어셈블러 레이블에 대하여 어설션합니다.” -
레이블 클래스 인스턴스(pseudo-assembly 코드 정의에 사용)를 C1와 Interpreter 양쪽에서 잘못 사용할 수 있습니다. 레이블에서 가장 일반적인 실수는 "분기"하되 bind()를 통해 코드 내 위치로 정의하지 않는 것입니다. 이를 인식하기 위해 어설션을 추가하였고 106 jtreg/hotspot 및 17 jtreg/jdk 테스트 실패를 트리거합니다. 그런 다음 UseLoopCounter가 True이고 UseOnStackReplacement가 False일 때 backedge_counter_overflow 레이블이 바인딩되지 않음이 확인되었습니다. 이것은 수정되지 않았고 위 테스트로 보호합니다.
- [C8-17] gcc7 사용 시 JVM 소스 코드의 이동성을 개선합니다.
-
이 패치는 gcc 스위치 “-Wno-deprecated-declarations”가 문제를 플래그하는 모든 장소에서 최신형 선언을 배치합니다. 또한 스위치가 미래와 관련된 문제를 파악합니다. 이렇게 되면 Amazon Linux 버전이 존재하는 모든 곳에서 소스 코드가 컴파일합니다. 이는 대부분 JDK-8152856
, JDK-8184309 , JDK-8185826 , JDK-8185900 , JDK-8187676 , JDK-8196909 , JDK-8196985 , JDK-8199685 , JDK-8200052 , JDK-8200110 , JDK-8209786 , JDK-8210836 , JDK-8211146 , JDK-8211370 , JDK-8211929 , JDK-8213414 및 JDK-8213575 의 조합입니다. - [C8-18] JDK 10의 백 포트, JDK-8195848
수정: “StartManagementAgent에 대한 JTREG 테스트가 실패했습니다.” -
자세한 내용은 http://serviceability-dev.openjdk.java.narkive.com/cDFwZce9
를 참조하십시오. - [C8-19] 그냥 두면 실패할 두 TCK 테스트를 통과하도록 레거시/비활성화된 암호 모음을 재활성화합니다.
- 사전 설치된 라이브러리 사용을 지원하는 OpenJDK9의 백 포트 3개
-
백 포트된 항목: libjpeg의 경우 JDK-8043805
, libpng의 경우 JDK-8035341 , lcms2의 경우 JDK-8042159 . - IcedTea 3.8의 aarch64 지원 통합.
- 벤더 관련 메타데이터 업데이트.
-
Amazon을 이 OpenJDK 배포의 벤더로 식별하고, 문제 보고를 위한 하이퍼링크를 추가합니다.
- OpenJDK 9의 백 포트, JDK-8048782
수정: “OpenJDK: PiscesCache: xmax/ymax 요약이 RasterFormatException의 원인이 될 수 있습니다.” -
이 버그는 '(int minx,int miny,int maxx,int maxy)' 인수를 허용하는 sun.java2d.pisces.PiscesCache 생성자와 관련이 있습니다. 내부 'bboxX1'과 'bboxY1'은 주어진 최대 X 및 Y 값보다 하나 큰 값으로 설정됩니다.