Aprimoramentos no desempenho do Java 10

Aprimoramentos no desempenho do Java 10

*1. Visão geral *

Neste tutorial rápido, discutiremos as melhorias de desempenho que acompanham a versão mais recente do Java 10.

Essas melhorias se aplicam a todos os aplicativos em execução no JDK 10, sem a necessidade de alterações no código para aproveitá-las.

===* 2. GC paralelo completo para G1 *

O coletor de lixo G1 é o padrão desde o JDK 9. No entanto, o GC completo para G1 usou um algoritmo de marca-varredura-compacto com rosca única.

Isso foi* alterado para o algoritmo paralelo de marcação e varredura compacta *no Java 10, reduzindo efetivamente o tempo de parada mundial durante o GC completo.

===* 3. Compartilhamento de dados de classe de aplicativo *

O compartilhamento de dados de classe, introduzido no JDK 5, permite que um conjunto de classes seja pré-processado em um arquivo compartilhado que pode ser mapeado na memória em tempo de execução para reduzir o tempo de inicialização, o que também pode reduzir o espaço ocupado pela memória dinâmica quando várias JVMs compartilham o mesmo arquivo.

O CDS permitiu apenas o carregador de classes de autoinicialização, limitando o recurso apenas às classes do sistema. O CDS de aplicativo (AppCDS) estende o CDS para permitir que o carregador de classes do sistema interno (também conhecido como "carregador de classes de aplicativos"), o carregador de classes de plataforma interno e os carregadores de classes personalizados carreguem classes arquivadas.* Isso torna possível usar o recurso para classes de aplicativos. *

Podemos usar as seguintes etapas para fazer uso desse recurso:

*1. Obtenha a lista de classes para arquivar *

O comando a seguir irá despejar as classes carregadas pelo aplicativo HelloWorld em hello.lst:

$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=hello.lst \
    -cp hello.jar HelloWorld

*2. Crie o arquivo AppCDS *

O comando a seguir cria hello.js a usando a entrada hello.lst como:

$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=hello.lst \
    -XX:SharedArchiveFile=hello.jsa -cp hello.jar

*3. Use o arquivo AppCDS *

O comando a seguir inicia a aplicação HelloWorld com hello.jsa como entrada:

$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=hello.jsa \
    -cp hello.jar HelloWorld
*AppCDS era um recurso comercial no Oracle JDK para JDK 8 e JDK 9. Agora, é de código aberto e disponibilizado ao público.*

*4. Compilador JIT experimental baseado em Java *

Graal é um compilador dinâmico escrito em Java que se integra à JVM do HotSpot; está focado em alto desempenho e extensibilidade. É também a base do compilador experimental Ahead-of-Time (AOT) introduzido no JDK 9.

O JDK 10 permite que o compilador Graal seja usado como um compilador JIT experimental na plataforma Linux/x64.

Para ativar o Graal como o compilador JIT, use as seguintes opções na linha de comando java:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Observe que esse é um recurso experimental e podemos não necessariamente obter melhor desempenho do que os compiladores JIT existentes.

===* 5. Conclusão*

Neste artigo rápido, focamos e exploramos os recursos de melhoria de desempenho no Java 10.