2009-09-23 3 views

답변

1

"check:jni:alwayscopy"옵션이 있는지 확실하지 않습니다.
IBM의 개발자 키트 및 런타임 환경, Java 2 Technology Edition, 버전 1.4.2하는 언급 않습니다 : 실제 JNI 함수 래퍼 세트를 야기

"-Xcheck:jni"옵션을 활성화 할 수 있습니다.

그러나 옵션의 체크와 매우 유사합니다 introduced in the JRE1.3 and 1.3 JNI는 (또한 JNI design를보고, JNI tips)

java -classic -cp . -Xcheck:jni Max 

합니다 (JRE1.6 특정 조건에서 수도도 require the "-XX:+RestoreMXCSROnJNICalls" option 있지만)

3

당신을 수행 IBM JVM에서 해당 옵션에 대한 참조가 있습니까? 나는 description of -Xcheck:jni을 독자적으로 볼 수 있지만, "-Xcheck : jni : alwayscopy"에 대한 전체 인터넷에서 유일한 참고 문헌은이 게시물입니다. 거기에 어떤 문서가 있습니까? 그런데 실패했습니다. Sun JVM에서 복제하려고하는 것은 무엇입니까?

어쨌든 this list of Sun JVM options에 따르면 1.3.1부터 JNI 기능에 대한 추가 검사를 수행하기 위해 -Xcheck:jni 플래그를 전달할 수있었습니다. 이것은 IBM의 VM에서 동일한 플래그와 동일한 것을 달성합니다.

alwayscopy 인수의 일부가 실제로 IBM JVM에서 받아 들여지고 -Xcheck:jni을 입력 한 것처럼 자동으로 무시되지 않는 것이 확실합니까?

+1

IBM JDK는이 옵션을 지원합니다. 이것은 특정 JNI [Get ArrayElements @ http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html#wp17314] 함수가 항상 데이터 사본을 반환하도록 지시합니다 . 이것은, 반환 된 배열이 Java 배열의 복사물 일 가능성이 있기 (위해) 때문에, 돌려 주어지는 배열의 변경은 Release ArrayElements()가 불려 갈 때까지 원래의 배열에 반드시 반영되지 않습니다. 디폴트에서는, 같은 프리미티브 (primitive) 배열이 돌려 주어집니다 만,이 옵션을 사용하면, VM가 항상 배열 요소의 카피를 돌려 줄 것을 VM에 지시합니다. – user170008