Avere esaminare le documentazione JNI qui: http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.htmlJNI GuaranteLocalCapacity - PERCHÉ?
particolare, guarda quanto detto nella descrizione della funzione EnsureLocalCapacity:
Per compatibilità all'indietro, il VM alloca riferimenti locali oltre l'assicurato capacità. (Come supporto per il debug, la VM può dare agli avvisi utente la creazione di troppi riferimenti locali. Nel JDK , il programmatore può fornire l'opzione -verbose: jni command line a attivare questi messaggi.) La VM chiama FatalError se non è possibile creare più riferimenti locali oltre la capacità garantita.
E inoltre, guarda come PushLocalFrame accetta un argomento di "capacità". (E dal modo in cui non menziona se questo è un limite rigido, o un limite soft come con EnsureLocalCapacity).
Dove si trova esattamente tutta questa assurdità sulla capacità di riferimento locale? I documenti dicono che VM sarà disposta ad allocare referenze al di là dell'attuale capacità formale, quindi perché non lo fa e mantiene tutta questa confusione di capacità fuori dall'API?
Per dare un'analogia con C, sembra che mi venga chiesto di pianificare in anticipo quante chiamate di malloc() ho intenzione di creare, e mi sembra un po 'ridicolo.
C'è qualcosa di importante che non vedo qui?