看一看JNI的文檔在這裏:http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.htmlJNI EnsureLocalCapacity - 爲什麼?
具體來說,看看什麼是對EnsureLocalCapacity功能描述說:
爲了向後兼容,虛擬機分配超出 在確保本地引用容量。 (作爲調試支持,虛擬機可能會給 用戶發出警告,說明正在創建太多本地引用。在 JDK中,程序員可以提供-verbose:jni命令行選項,以打開這些消息,以打開 。)VM調用FatalError如果沒有更多的本地 引用可以創建超出保證的容量。
此外,看看PushLocalFrame如何採取「容量」的參數。 (順便說一下,它沒有提到這是一個硬限制還是像EnsureLocalCapacity那樣的軟限制)。
究竟這些廢話是關於本地參考容量的呢?這些文檔說,虛擬機將願意分配超過當前正式容量的引用,那麼爲什麼它不這樣做,並保持所有這些容量凌亂的API?
爲了給C一個類比,感覺就像我被要求預先計劃多少次malloc()調用一樣,並且感覺有點荒謬。
有什麼重要的我只是沒有看到這裏?