- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
我对JNI
Ít được biết đến và cách nó được xử lý nội bộ JNI
môi trường. Tôi có một câu hỏi đơn giản.
tôi ở đây Java
Có một cuộc gọi phương thức JNI
phương pháp và vượt qua một String
trong các tham số. JNI
phương pháp này là chuỗi ký tự
chấp nhận đối tượng chuỗi và lưu trữ nó trong vectơ tĩnh
中.
Câu hỏi của tôi: Có an toàn khi sử dụng vectơ này trong suốt vòng đời của ứng dụng Java không? tôi cần suy nghĩ về GC
? Có thể di chuyểnString
hiện hữu Java
môi trường? Điều này có gây ra vấn đề gì trong trường hợp này không? Nếu có, cách tiếp cận đúng là gì?
câu trả lời hay nhất
Có thể có hoặc không, về cơ bản, VM hầu như không đưa ra lời hứa nào về điều gì sẽ xảy ra với bộ nhớ được sử dụng bởi các chuỗi sau lệnh gọi JNI
Gần như trực tiếp từ nguồn: http://java.sun.com/docs/books/jni/html/objtypes.html
JNI chuyển các đối tượng tới các phương thức gốc dưới dạng tham chiếu mờ. Tham chiếu mờ là loại con trỏ C tham chiếu đến cấu trúc dữ liệu nội bộ trong máy ảo Java. Tuy nhiên, bố cục chính xác của cấu trúc dữ liệu bên trong bị ẩn khỏi lập trình viên. Mã gốc phải thao tác đối tượng cơ bản thông qua các hàm JNI thích hợp, có sẵn thông qua con trỏ giao diện JNIEnv. Ví dụ: loại JNI tương ứng của java.lang.String là jstring. Giá trị chính xác được tham chiếu bởi jstring không liên quan gì đến mã gốc. Mã gốc gọi các hàm JNI như GetStringUTFChars(§3.2.1) để truy cập nội dung của chuỗi.
Nói tóm lại, dù sao thì bạn cũng không nên truy cập trực tiếp vào giá trị của chuỗi jstring, vì vậy không có lý do gì để lưu trữ chuỗi jstring, hãy sử dụng các phương pháp thích hợp để chuyển đổi chúng thành chuỗi gốc và lưu trữ chúng theo cách đó.
Giới thiệu về java - Vòng đời đối tượng của jstring trong JNI là gì? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/7089403/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
Tôi là một lập trình viên xuất sắc, rất giỏi!