Lista de patches para o Amazon Corretto 8
Esta seção relaciona todos os patches aplicados ao OpenJDK para o Amazon Corretto 8. Também fornecemos links para os problemas no projeto do OpenJDK.
- [C8-1] Evite OutOfMemoryException prematuro quando a invocação G1 GC é suspensa por uma chamada nativa de longa duração.
-
Os programas que usam o G1 GC podem apresentar exceções espúrias de falta de memória (OOM), mesmo quando o heap do Java está longe de ser preenchido. Isso aconteceu quando um loop de giro que esperou por chamadas nativas de longa duração desistiu após apenas duas rodadas. Esse pequeno patch faz esse loop esperar o tempo que for necessário. Em geral, bastam mais algumas rodadas. Na pior das hipóteses, um GC completo acabaria ocorrendo (graças a JDK-8137099) e também resolveria o problema. O patch inclui um teste de unidade que provoca a necessidade de mais de duas rodadas e só é bem-sucedido se o patch estiver no lugar. Consulte JDK-8137099
para discussão. - [C8-2] Porta traseira do OpenJDK 10, corrigindo JDK-8177809
: “File.lastModified() is losing milliseconds (always ends in 000)”. -
O patch remove inconsistências em como o timestamp da última modificação de um arquivo é relatado. Padroniza o comportamento em plataformas de criação e métodos Java para que o usuário receba precisão de segundo nível. Consulte JDK-8177809
. - [C8-3] Backport do OpenJDK9, corrigindo JDK-8150013, “ParNew: Prune nmethods scavengable list”.
-
Este patch reduz as latências de pausa para o paralelo e o coletor de lixo do CMS. A “varredura da raiz” do GC acelera em até três ordens de grandeza, reduzindo as inspeções de código redundantes.
- [C8-4] Backport do OpenJDK 9, corrigindo JDK-8047338
: “javac is not correctly filtering non-members methods to obtain the function descriptor”. -
Este patch corrige um bug do compilador que causou erros de tempo de compilação quando uma interface funcional emitiu uma exceção que estende a exceção.
- [C8-5] Backport do OpenJDK 10, corrigindo JDK-8144185
: “javac produces incorrect RuntimeInvisibleTypeAnnotations length attribute”. -
Este problema fez com que Findbugs, JaCoCo e Checker Framework falhassem em alguns programas de entrada bem formados.
- [C8-6] Acione a limpeza da tabela de strings em G1 com base no crescimento da tabela de strings.
-
Este patch aciona as coleções G1 "mistas" necessárias para limpar as entradas da tabela de strings com base no crescimento da tabela de strings, não apenas no uso do heap do Java. O último é uma medida independente e pode ser acionado raramente ou mesmo nunca, em algumas aplicações. Assim, a tabela de strings pode crescer sem limites, o que é efetivamente um vazamento de memória nativa. Consulte JDK-8213198
. - [C8-7] Porta traseira do OpenJDK 9, corrigindo JDK-8149442
: “MonitorInUseLists should be on by default, deflate idle monitors taking too long”. -
Este patch faz com que a remoção do gargalo de desempenho para aplicativos com uso altamente intensivo de threads seja a configuração padrão. Habilitar MonitorInUseLists permite uma deflação mais eficiente de monitores potencialmente em uso, em vez de toda a população de monitores.
- [C8-8] Porta traseira do OpenJDK 11, corrigindo JDK-8198794
: “Hotspot crash on Cassandra 3.11.1 startup with libnuma 2.0.3”. -
Este patch impede que o Cassandra 3.11.1 trave na inicialização.
- [C8-9] Porta traseira do OpenJDK 11, corrigindo JDK-8195115
: “G1 Old Gen MemoryPool CollectionUsage.used values don't reflect mixed GC results”. -
Sem este patch, é impossível determinar o quanto o heap está cheio por meio do JMX ao usar o G1 GC.
- [C8-10] Acelere Class.getSimpleName() e Class.getCanonicalName().
-
A memorização acelera significativamente essas funções. Este patch inclui testes de unidade de correção. Consulte JDK-8187123
. - [C8-11] Porta traseira do JDK-8068736 no OpenJDK9, corrigindo “Avoid synchronization on Executable/Field.declaredAnnotations”.
-
Melhora o desempenho de Executable/Field.declaredAnnotations() por cache de resultados que evita a sincronização de threads.
- [C8-12] Porta traseira do OpenJDK 9, corrigindo JDK-8077605
: “Initializing static fields causes unbounded recursion in javac”. - [C8-13] Corrigido JDK-8130493: “javac silently ignores malformed classes in the annotation processor”.
-
O javac engoliu silenciosamente arquivos de classe malformados em um processador de anotações e retornou com o código de saída 0. Com este patch, o javac relata uma mensagem de erro e retorna com um código de saída diferente de zero.
- [C8-14] Mensagem de erro aprimorada para a ferramenta jmap.
-
Mensagens de erro atualizadas para sugerir abordagens adicionais quando o processo de destino não responde. Consulte JDK-8213443
. - [C8-15] Corrigido JDK-8185005: “Improve performance of ThreadMXBean.getThreadInfo(long ids[], int maxDepth)”.
-
Este patch melhora o desempenho de uma função interna do JVM que procura uma instância Java Thread a partir de um ID de encadeamento do sistema operacional. Isso beneficia vários ThreadMXBean calls such as getThreadInfo(), getThreadCpuTime() e getThreadUserTime(). A melhoria de desempenho relativa aumenta com o número de threads no JVM, pois a pesquisa linear é substituída por uma consulta de tabela de hash.
- [C8-16] Porta traseira do OpenJDK 12, corrigindo JDK-8206075
: “On x86, assert on unbound assembler Labels used as branch targets”. -
Instâncias de classe de rótulo (usadas para definir o código de pseudomontagem) podem ser usadas incorretamente no C1 e no intérprete. O erro mais comum em relação a um rótulo é ser "ramificado para" mas nunca definido como um local no código por meio de vinculação(). Uma afirmação foi adicionada para capturá-los e, assim, disparou 106 falhas de teste jtreg/hotspot e 17 jtreg/jdk. Em seguida, determinamos que o rótulo backedge_counter_overflow não estava vinculado quando UseLoopCounter era True, mas UseOnStackReplacement era False. Isso agora é corrigido e guardado pelos testes acima.
- [C8-17] Melhore a portabilidade do código-fonte do JVM ao usar o gcc7.
-
Este patch coloca declarações de tipo atualizadas em todos os lugares onde a switch de gcc “-Wno-deprecated-declarations” sinalizaria problemas. Também permite que o switch capture futuros problemas relacionados. Isso faz com que o código-fonte seja compilado em todas as versões atuais do Amazon Linux. Esta é uma combinação de grande parte de 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 e JDK-8213575 . - [C8-18] Porta traseira do JDK 10, corrigindo JDK-8195848
: “JTREG test for StartManagementAgent fails”. -
Consulte http://serviceability-dev.openjdk.java.narkive.com/cDFwZce9
para obter mais detalhes. - [C8-19] Reativa um conjunto de codificação legado/desabilitado para passar em dois testes de TCK que, caso contrário, falhariam.
- Três backports do OpenJDK9 para suporte usando bibliotecas pré-instaladas.
-
Itens enviados para backport: JDK-8043805 para libjpeg
, JDK-8035341 para libpng e JDK-8042159 para lcms2 . - Integração do suporte a aarch64 de IcedTea 3.8.
- Atualizações para metadados relacionados ao fornecedor.
-
Identifica a Amazon como fornecedora dessa distribuição OpenJDK e adiciona hiperlinks para relatar problemas.
- Backport do OpenJDK 9, corrigindo JDK-8048782
: “OpenJDK: PiscesCache : xmax/ymax rounding up can cause RasterFormatException”. -
O bug está relacionado ao construtor sun.java2d.pisces.PiscesCache que aceita argumentos '(int minx,int miny,int maxx,int maxy)': os internos 'bboxX1' e 'bboxY1' estão definidos como valores maiores do que um determinado máximo de valores X e Y.