2011-07-28 2 views
4

구문 분석을 위해 많은 양의 메모리를 jni쪽으로 전달해야합니다. GetByteArrayElements를 사용하여 네이티브 포인터를 가져 왔습니다. 그러나이 메서드는 메모리를 직접 사용하지 않고 항상 복사하는 것으로 나타났습니다. 그래서 GetDirectBufferAddress를 사용하여 메모리 복사본을 피하기 위해 직접 메모리를 얻습니다. 이렇게하려면 allocateDirect 메서드를 사용하여 메모리를 할당해야합니다. 하지만 나에게 주어진 메모리는 바이트 배열이며 원시 메모리는 아닙니다. byte []를 bytebuffer로 변환하는 방법이 있습니까? 감사합니다. .바이트 []를 바이트 버퍼 원시 메모리로 변환하는 방법은 무엇입니까?

+0

VM (기본 배열)에서 VM 외부 (원시 OS 메모리 공간)로 데이터를 이동하는 중입니다. 불행히도 "피 두뇌"장벽을 통한 데이터 전환으로 복사 작업이 필요합니다. . –

답변

4

불행히도 put을 사용하고 바이트 배열을 allocateDirect으로 할당 된 버퍼로 복사해야합니다.

+0

그건 정말 불행히도. 메모리 복사본을 피할 수 없다, 자바 쪽 또는 jni 쪽. – PDF1001

관련 문제