android상에서 jni를 통해 1기가 이상 alloc하려 하면 alloc이 되지 않는것 같습니다.

lmk378의 이미지

jni를 shared_lib이 아닌 executable로 만들어 adb shell상에서 태스트하면
1기가 이상도 malloc이 가능한데 이상하게 APP에서 jni로 접근하여 1기가를 malloc하면
오류가 발생하는것 같습니다.(950MB 정도까지 할당되는것 같더군요)
해결방법 아시는분 답변 부탁드립니다.

rubenz의 이미지

static char *pBuf; ==> 메모리 용량 만큼 가능.
char *pBuf; ==> 시스템 설정에 따라서 다름.( 1GB이상은 안되는 것으로 보임)

lmk378의 이미지

답변 감사합니다.
static으로 선언하진 않았습니다만 static으로 바꾸어서 다시 해봐도 안되는군요.
(사실 static선언이 메모리 할당에 무슨 의미가 있는지는 잘 모르겠습니다.)
중요한건 static을 붙이던 안붙이던 executable로 만들면 1기가 이상도 할당이 가능하다는 것입니다.
근데 이상하게 shared_library로 컴파일해서 android app상에서 수행하면 1기가 이상할당이 안됩니다.

rubenz의 이미지

이전에 비슷하게 경험 햇던 거군요.
제가 dll로 짜고... 상대방이 java로 호출하면.. 죽어버리고...
똑같은 로직으로 c로 짜면 제대로 읽었던 기억이 나네요.
(1GB짜리 파일 읽기.)
일아본 결과 java vm 의 설정에서 메모리 설정 하는 부분이 있는데, 이부분이 잘못되었다고만 들었습니다.
결국 C로 대체 해서 문제 해결 했습니다.^^ 별 도움이 안되네요.
분명한건..그때 둘이서 별 삽질을 다 했는데.. 1GB 파일은 못읽었던 기억이 나네요.(메모리에 저장..)

lmk378의 이미지

이제야 답변 다내요^^;;
감사합니다.~문제는 아직도 답을 못찾았습니다~ㅋ

lmk378의 이미지

none

ihavnoth의 이미지

테스트를 해보지 않은 추측입니다.

jni에서 malloc는 자바 어플의 프로세스에 포함되는 것 같습니다.
(pid를 출력해보면 확인 할 수 있을 겁니다)

자바 어플 프로세스에 포함된다면 Java VM관련 메모리가 이미 할당돼있으니

C로 테스트한것보다 가능 할당 메모리가 작은게 맞을 것 같습니다.
(테스트로 Java VM Heap 사이즈 설정을 늘려가면서 "/system/build.prop, dalvik.vm.heapsize=32m"
테스트해보면 확인이 가능할것 같습니다)

없음

lmk378의 이미지

인용 : "C로 테스트한것"
-> "library가 아닌 executable로 테스트 한것" 으로 해석하겠습니다^^;;;

답변 감사합니다. 일단 제가낸 결론은 VM상에서 할당 가능한 Maxium memory size를 정해놓은것 같습니다.
예상컨데 VM할당 사이즈만큼의 차이라면 500~600MB이상 차이나진 않을것 같아요^^;
즉 App상에서는 900MB 정도 할당가능하고 excutable로 만들어서 태스트하면 1700MB도 태스트가 가능합니다~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.