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.