Quando uma classe estática aninhada (e seus membros estáticos) é carregada na memória?

Aqui, eu estava tentando implementar uma classe singleton para minha conectividade de banco de dados usando a classe auxiliar estática interna:

package com.myapp.modellayer;

public class DatabaseConnection {

    private DatabaseConnection() {
        //JDBC code...
    }

    private static class ConnectionHelper {
        // Instantiating the outer class
        private static final DatabaseConnection INSTANCE = new DatabaseConnection();
    }

    public static DatabaseConnection getInstance() {
        return ConnectionHelper.INSTANCE;
    }
}

No entanto, minha dúvida é quando essa classe interna estática,ConnectionHelper, é carregado na memória da JVM:

No momento em queDatabaseConnection a classe é carregada ou no momento em quegetInstance () método é chamado?

questionAnswers(2)

yourAnswerToTheQuestion