이전에 비슷하게 경험 햇던 거군요.
제가 dll로 짜고... 상대방이 java로 호출하면.. 죽어버리고...
똑같은 로직으로 c로 짜면 제대로 읽었던 기억이 나네요.
(1GB짜리 파일 읽기.)
일아본 결과 java vm 의 설정에서 메모리 설정 하는 부분이 있는데, 이부분이 잘못되었다고만 들었습니다.
결국 C로 대체 해서 문제 해결 했습니다.^^ 별 도움이 안되네요.
분명한건..그때 둘이서 별 삽질을 다 했는데.. 1GB 파일은 못읽었던 기억이 나네요.(메모리에 저장..)
변수를... static 으로 선언 하셨나요?
static char *pBuf; ==> 메모리 용량 만큼 가능.
char *pBuf; ==> 시스템 설정에 따라서 다름.( 1GB이상은 안되는 것으로 보임)
답변 감사합니다. static으로 선언하진
답변 감사합니다.
static으로 선언하진 않았습니다만 static으로 바꾸어서 다시 해봐도 안되는군요.
(사실 static선언이 메모리 할당에 무슨 의미가 있는지는 잘 모르겠습니다.)
중요한건 static을 붙이던 안붙이던 executable로 만들면 1기가 이상도 할당이 가능하다는 것입니다.
근데 이상하게 shared_library로 컴파일해서 android app상에서 수행하면 1기가 이상할당이 안됩니다.
아..제가 글을 잘못 이해 했군요..
이전에 비슷하게 경험 햇던 거군요.
제가 dll로 짜고... 상대방이 java로 호출하면.. 죽어버리고...
똑같은 로직으로 c로 짜면 제대로 읽었던 기억이 나네요.
(1GB짜리 파일 읽기.)
일아본 결과 java vm 의 설정에서 메모리 설정 하는 부분이 있는데, 이부분이 잘못되었다고만 들었습니다.
결국 C로 대체 해서 문제 해결 했습니다.^^ 별 도움이 안되네요.
분명한건..그때 둘이서 별 삽질을 다 했는데.. 1GB 파일은 못읽었던 기억이 나네요.(메모리에 저장..)
이제야 답변 다내요^^;; 감사합니다.~문제는 아직도
이제야 답변 다내요^^;;
감사합니다.~문제는 아직도 답을 못찾았습니다~ㅋ
none
none
Java VM 관련 메모리 때문이 아닐까요?
테스트를 해보지 않은 추측입니다.
jni에서 malloc는 자바 어플의 프로세스에 포함되는 것 같습니다.
(pid를 출력해보면 확인 할 수 있을 겁니다)
자바 어플 프로세스에 포함된다면 Java VM관련 메모리가 이미 할당돼있으니
C로 테스트한것보다 가능 할당 메모리가 작은게 맞을 것 같습니다.
(테스트로 Java VM Heap 사이즈 설정을 늘려가면서 "/system/build.prop, dalvik.vm.heapsize=32m"
테스트해보면 확인이 가능할것 같습니다)
없음
인용 : "C로 테스트한것" ->
인용 : "C로 테스트한것"
-> "library가 아닌 executable로 테스트 한것" 으로 해석하겠습니다^^;;;
답변 감사합니다. 일단 제가낸 결론은 VM상에서 할당 가능한 Maxium memory size를 정해놓은것 같습니다.
예상컨데 VM할당 사이즈만큼의 차이라면 500~600MB이상 차이나진 않을것 같아요^^;
즉 App상에서는 900MB 정도 할당가능하고 excutable로 만들어서 태스트하면 1700MB도 태스트가 가능합니다~
댓글 달기