Lädt...


🔧 Java Virtual Machine: ciclo de vida e Class Loaders


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

A Java Virtual Machine (JVM) é o núcleo do ecossistema Java, fornecendo todas as ferramentas essenciais para a execução de código Java. Para compreender plenamente seu funcionamento, é crucial entender o ciclo de vida desse interpretador e as suas implicações para o desempenho e otimização de aplicações Java.

Todo o ciclo de vida da JVM inicia-se com um processo fundamental chamado de "JVM Bootstrapping" que é responsável por construir todo o ambiente de execução e prepará-lo. É nesse contexto que: os argumentos passados na linha de comando são interpretados, o código da JVM é alocado na memória, as estruturas de dados internas da JVM são inicializadas, o gerenciamento de memória se inicia, e por fim a principal thread da aplicação passa a operar. Vamos explorar cada subprocesso descrito nesse parágrafo individualmente:

Os argumentos passados na linha de comando são interpretados

Quando se inicia o programa através da linha de comando, a JVM inicia uma cadeia de processos responsáveis por analisar os argumentos fornecidos, os quais podem incluir parâmetros de inicialização — como por exemplo: -Xms e -Xmx para definir o tamanho mínimo e máximo do heap, área da memória responsável pela alocação e criação de objetos no contexto da aplicação — especificações de debug ou configurações até mesmo do próprio ciclo do Garbage Collector.

Antes de prosseguir, é importante mencionar: com o intuito de simplificação, estaremos analisando o segmento do código que lida com o parsing de argumentos avançados da JVM — os que se iniciam com -XX.

Para se ter mais clareza, vamos utilizar o código open-source da OpenJDK para mais referências. No arquivo arguments.cpp localizado no diretório src/hotspot/share/runtime.arguments.cpp a função que interpreta parâmetros avançados (-XX) pelo CLI é essa:

Image description

Fazendo uma breve análise, a função inicia uma verificação para ver se o argumento passado se inicia com + ou -, determinando se a flag for booleana, e também se deve ser desativada ou ativada.

Image description

Depois disso, o código começa a extração do nome da flag. Cada caractere é analisado, se não for alfanumerico ou não for _, ele termina (significando que o nome da flag está completa).

Image description

Depois de fazer as verificações e identificar o nome da flag, o método JVMFlag* flag = find_jvm_flag(name, name_len); finalmente é invocado para ver se há alguma configuração disponível ao que foi fornecido.

Esse é um pequeno resumo de como os argumentos mais avançados da -XX são parseados. É possível encontrar, no entanto, nesse mesmo arquivo que irei citar, os processos de argumentos que se iniciam com -X que passam por outra função de parsing:

Image description

Exemplo da flag: -XMS

Image description

ARTIGO EM CONSTRUÇÃO

...

🔧 Java Virtual Machine: ciclo de vida e Class Loaders


📈 100.7 Punkte
🔧 Programmierung

🔧 Ciclo de Vida de Objetos Java


📈 57.05 Punkte
🔧 Programmierung

🔧 Como o CI/CD pode transformar o ciclo de vida de desenvolvimento


📈 51.39 Punkte
🔧 Programmierung

🔧 Máquina Valley do TryHackMe e o ciclo de vida de um ciberataque


📈 51.39 Punkte
🔧 Programmierung

🔧 Hooks do Ciclo de Vida do Angular: Uma Visão Geral


📈 51.39 Punkte
🔧 Programmierung

🔧 Types of Class loaders in JAVA


📈 36.22 Punkte
🔧 Programmierung

🔧 Accelerare il ciclo di sviluppo serverless con SAM Accelerate


📈 28.58 Punkte
🔧 Programmierung

🔧 Creating a Linux Virtual Machine in Azure Portal, Implementing Virtual Machine Scale Set


📈 26.18 Punkte
🔧 Programmierung

🔧 Creating A Window Virtual Machine, RDP into it, Add a data disc to window virtual machine.


📈 26.18 Punkte
🔧 Programmierung

📰 Java Virtual Machine: GraalVM 21 startet die Trüffelsuche für Java


📈 24.41 Punkte
📰 IT Nachrichten

🔧 What is a singleton class in Java? And How to implement a singleton class?


📈 23.82 Punkte
🔧 Programmierung

🔧 Viva la Vita Vida OR How To Hack PlayStation Vita


📈 22.81 Punkte
🔧 Programmierung

🔧 Viva la Vita Vida OR How To Hack PlayStation Vita


📈 22.81 Punkte
🔧 Programmierung

🔧 Como Organizo Minha Vida Digital


📈 22.81 Punkte
🔧 Programmierung

🎥 35C3 - Viva la Vita Vida


📈 22.81 Punkte
🎥 IT Security Video

📰 Las Vegas aprovecha la tecnología inteligente para transformar la vida urbana


📈 22.81 Punkte
📰 IT Security Nachrichten

🎥 35C3 - Viva la Vita Vida - deutsche Übersetzung


📈 22.81 Punkte
🎥 IT Security Video

📰 Was sich durch die EU-Mehrwertsteuerreform ViDA verändert


📈 22.81 Punkte
📰 IT Security Nachrichten

⚠️ Episodio 3: Consejos de Avast - Nunca tengas una doble vida sin saberlo


📈 22.81 Punkte
⚠️ Malware / Trojaner / Viren

🔧 Como a AWS Cloud Control API e o novo Terraform provider impactam sua vida?


📈 22.81 Punkte
🔧 Programmierung

⚠️ Dicas Rápidas da Avast Episódio 3 - Jamais viva uma vida dupla sem querer


📈 22.81 Punkte
⚠️ Malware / Trojaner / Viren

🔧 Os eventos (de tech) morreram? Vida longa aos eventos


📈 22.81 Punkte
🔧 Programmierung

🔧 A Armadilha Sutil: Desvendando os Padrões Enganosos ("Deceptive Patterns") na Nossa Vida Digital


📈 22.81 Punkte
🔧 Programmierung

🔧 La resiliencia como habilidad de vida


📈 22.81 Punkte
🔧 Programmierung

🔧 Como el viaje donde me robaron alrededor de $4000 se convirtió en uno de los mejores viajes de mi vida


📈 22.81 Punkte
🔧 Programmierung

🔧 Aplicando o Learn In Public na Vida Real


📈 22.81 Punkte
🔧 Programmierung

📰 Von Karrierefragen und leeren Bahnhöfen: Vida-Gewerkschafter Hebenstreit in der "ZiB 2"


📈 22.81 Punkte
📰 IT Nachrichten

🐧 Linux Kernel 5.8 llega al final de su vida útil


📈 22.81 Punkte
🐧 Linux Tipps

🐧 Tutorial Completo De Los Cronjobs En Linux Con Ejemplos De La Vida Real


📈 22.81 Punkte
🐧 Linux Tipps

matomo