Có xem xét các tài liệu JNI đây: http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.htmlJNI EnsureLocalCapacity - TẠI SAO?
Cụ thể, nhìn vào những gì được nói trong các mô tả cho hàm EnsureLocalCapacity:
Đối với khả năng tương thích ngược, VM phân bổ tài liệu tham khảo địa phương ngoài bạn có đảm bảo sức chứa. (Là một sự hỗ trợ gỡ lỗi, VM có thể cung cấp cho các cảnh báo người dùng rằng quá nhiều tham chiếu cục bộ đang được tạo. Trong JDK, người lập trình có thể cung cấp tùy chọn dòng lệnh -verbose: jni để bật các thông báo này.) cuộc gọi FatalError nếu không có thêm địa phương tài liệu tham khảo có thể được tạo ra ngoài khả năng đảm bảo.
Và hơn nữa, hãy xem cách PushLocalFrame lấy đối số "dung lượng". (Và bằng cách nó không đề cập đến nếu đây là một giới hạn cứng, hoặc một giới hạn mềm như với EnsureLocalCapacity).
Trường hợp tất cả điều này vô nghĩa về khả năng tham chiếu cục bộ đến từ đâu? Các tài liệu nói rằng VM sẽ sẵn sàng phân bổ các tham chiếu vượt quá khả năng chính thức hiện tại, vậy tại sao nó không làm như vậy và giữ tất cả các khả năng này lộn xộn ra khỏi API?
Để đưa ra sự tương tự với C, có vẻ như tôi đang được yêu cầu lên kế hoạch trước bao nhiêu cuộc gọi malloc() tôi sẽ thực hiện và cảm thấy hơi vô lý.
Có điều gì quan trọng mà tôi không thấy ở đây không?