Mantendo uma referência global ao ambiente JNIEnv

Estou armazenandoJNIEnv em um global para que eu possa chamar métodos java estáticos mais tarde. Mas é elevadoary armazenar um ponteiro global para oJNIEnv, como alguém faria com qualquer outro objeto java, ou é um caso especial que não requer isso.

JNIEnv* globalEnvPointer;

[JNICALL etc] void init(JNIENv* env, [etc])
{
   //required?
   globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
   //or is this OK?
   globalEnvPointer = env;
}

Editar

Eu sou bing um pouco idiota aqui, todos os métodos que vão usarglobalEnvPointer, são invocados dentro do meu init porque o meuinit é na verdade minhac programa demain método, que não retornará até o final do programa. Eu também não estou usando outros threads no programa c. Eu acho que isso simplifica a resposta.

JNIEnv* globalEnvPointer;

[JNICALL etc] void main(JNIENv* env, [etc])
{
   //required?
   globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
   //or is this OK?
   globalEnvPointer = env;
   someMethod();
}

void someMethod()
{
   //use globalEnvPointer here
}

questionAnswers(1)

yourAnswerToTheQuestion