Linguagem JAVA: qual é o mecanismo de carregamento lento?

A JVM não estipula quando carregar, geralmente quando usar essa classe, quando carregar, mas a JVM estipula quando deve ser inicializada (inicialização é o terceiro passo, carregamento, conexão, inicialização), desde que seja carregado, então deve ser Ele é inicializado, então podemos julgar se a classe foi carregada verificando se a classe foi inicializada.

O que aconteceu durante a inicialização?

Quando inicializado, ele chamará automaticamente o bloco de código estático para concluir o trabalho de inicialização. E atribuirá automaticamente valores iniciais a variáveis ​​de membros estáticos.

Cinco casos de LazyLoading

As cinco situações a seguir:

nova instrução getstatic putstatic invokestatic, exceto para acessar variáveis ​​finais

Quando java.lang.reflect faz uma chamada reflexiva para uma classe

Ao inicializar uma subclasse, a classe pai inicializa primeiro

Quando a máquina virtual inicia, a classe principal a ser executada deve ser inicializada

Quando a linguagem dinâmica suporta java.lang.invoke.MethodHandle e o resultado analisado é o manipulador de método de REF_getstatic REF_putstatic REF_invokestatic, esta classe deve ser inicializada

Código de validação preguiçoso

 

resultado:

 

pudermos

Acho que você gosta

Origin blog.csdn.net/huanfeng_AI/article/details/132309065
Recomendado
Clasificación