JNI EnsureLocalCapacity - ПОЧЕМУ?

Взгляните на документы JNI здесь: http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

В частности, посмотрите, что такое в описании функции EnsureLocalCapacity сказано:

Для обратной совместимости виртуальная машина выделяет локальные ссылки за пределами обеспеченная мощность. (В качестве поддержки отладки виртуальная машина может предоставить предупреждения пользователя о том, что создается слишком много локальных ссылок. в JDK, программист может предоставить параметр командной строки -verbose: jni для включите эти сообщения.) ВМ вызывает FatalError, если больше нет локальных ссылки могут быть созданы за пределами гарантированной емкости.

И, кроме того, посмотрите, как PushLocalFrame принимает аргумент "емкость". (И, кстати, здесь не упоминается, является ли это жестким пределом или мягким пределом, как с EnsureLocalCapacity.)

Откуда именно берется вся эта чепуха о локальной эталонной емкости? В документации говорится, что виртуальная машина будет готова выделять ссылки за пределами текущей формальной емкости, так почему бы ей просто не сделать это и не убрать весь этот беспорядок с емкостью в API?

Если провести аналогию с C, это похоже на Меня просят заранее спланировать, сколько вызовов malloc () я собираюсь сделать, и это кажется немного смешным.

Есть ли что-то важное, чего я здесь просто не вижу?

9
задан Marek Sebera 17 March 2013 в 17:53
поделиться