Java 10: Aprimorando Performance com Compartilhamento de Dados de Classe (App CDS)
JEP 310 - Compartilhamento de Dados de Classe de Aplicação
Quando a JVM inicia, carrega classes na memória como passo preliminar. Com múltiplos JARs e classes, há um atraso evidente na primeira requisição. Em arquitetura serverless, esse atraso impacta o tempo de boot, operação crítica. O Application Class-Data Sharing (App CDS) reduz o tempo de inicialização. O Java já possuía CDS; o Java 10 permite colocar classes da aplicação em um arquivo compartilhado, reduzindo inicialização e footprint ao compartilhar metadados de classe comuns entre múltiplos processos Java.
Processo em 3 Passos
1. Criar Lista de Classes para Arquivar
Crie uma lista welcome.lst da classe Greeting.java em welcome.jar usando o Java Launcher:
$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=welcome.lst -cp welcome.jar Greeting
2. Criar Arquivo AppCDS
Arquive a lista de classes para uso no App CDS:
$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=welcome.lst -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar
3. Usar Arquivo AppCDS
Use o arquivo AppCDS ao iniciar com o Java Launcher:
$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar Greeting
Isso é especialmente valioso em ambientes de contêineres e serverless, onde inicialização rápida é essencial.
Java
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
- Entendendo o Java Vector: Uso, Recursos e Comparação com ArrayList