jstring Java_com_example_hellojni_HelloJni_buildString(JNIEnv *env, jobject sThis){
for (int i=0; i < 100000; i++){
char* c=(char*)env->NewStringUTF("xx");
}
return env->NewStringUTF("test");
}
12-04 14:46:36.399: DEBUG/dalvikvm(8086): Trying to load lib
/data/data/com.example.hellojni/lib/libhello-jni.so 0x405143d8 12-04
14:46:36.399: DEBUG/dalvikvm(8086): Added shared lib
/data/data/com.example.hellojni/lib/libhello-jni.so 0x405143d8 12-04
14:46:36.431: WARN/dalvikvm(8086): ReferenceTable overflow (max=1024)
12-04 14:46:36.431: WARN/dalvikvm(8086): Last 10 entries in JNI local
reference table: 12-04 14:46:36.431: WARN/dalvikvm(8086): 1014:
0x4052b258 cls=Ljava/lang/String; (28 bytes) 12-04 14:46:36.431:
WARN/dalvikvm(8086): 1015: 0x4052b298 cls=Ljava/lang/String; (28
bytes) 12-04 14:46:36.431: WARN/dalvikvm(8086): 1016: 0x4052b2d8
cls=Ljava/lang/String; (28 bytes) 12-04 14:46:36.431:
WARN/dalvikvm(8086): 1017: 0x4052b318 cls=Ljava/lang/String; (28
bytes) 12-04 14:46:36.431: WARN/dalvikvm(8086): 1018: 0x4052b358
cls=Ljava/lang/String; (28 bytes) 12-04 14:46:36.431:
WARN/dalvikvm(8086): 1019: 0x4052b398 cls=Ljava/lang/String; (28
bytes) 12-04 14:46:36.431: WARN/dalvikvm(8086): 1020: 0x4052b3d8
cls=Ljava/lang/String; (28 bytes) 12-04 14:46:36.431:
WARN/dalvikvm(8086): 1021: 0x4052b418 cls=Ljava/lang/String; (28
bytes) 12-04 14:46:36.431: WARN/dalvikvm(8086): 1022: 0x4052b458
cls=Ljava/lang/String; (28 bytes) 12-04 14:46:36.431:
WARN/dalvikvm(8086): 1023: 0x4052b498 cls=Ljava/lang/String; (28
bytes) 12-04 14:46:36.431: WARN/dalvikvm(8086): JNI local reference
table summary (1024 entries): 12-04 14:46:36.431: WARN/dalvikvm(8086):
1 of Ljava/lang/Class; 236B 12-04 14:46:36.431: WARN/dalvikvm(8086):
1 of Ljava/lang/Class; 284B 12-04 14:46:36.431: WARN/dalvikvm(8086):
1 of Ljava/lang/Class; 572B 12-04 14:46:36.431: WARN/dalvikvm(8086):
1020 of Ljava/lang/String; 28B (1020 unique) 12-04 14:46:36.431:
WARN/dalvikvm(8086): 1 of [Ljava/lang/String; 28B 12-04
14:46:36.431: WARN/dalvikvm(8086): Memory held directly by tracked
refs is 29680 bytes 12-04 14:46:36.431: ERROR/dalvikvm(8086): Failed
adding to JNI local ref table (has 1024 entries) 12-04 14:46:36.431:
INFO/dalvikvm(8086): “main” prio=5 tid=1 RUNNABLE 12-04 14:46:36.431:
INFO/dalvikvm(8086): | group=”main” sCount=0 dsCount=0
obj=0x4001f1b8 self=0xcee8 12-04 14:46:36.431: INFO/dalvikvm(8086):
| sysTid=8086 nice=0 sched=0/0 cgrp=default handle=-1345006496 12-04
14:46:36.431: INFO/dalvikvm(8086): at
com.example.hellojni.HelloJni.buildString(Native Method) 12-04
14:46:36.431: INFO/dalvikvm(8086): at
com.example.hellojni.HelloJni.onCreate(HelloJni.java:93)
weird. if my for next looks like this:
for (int i=0; i < 100; i++){
then evreything ok.
How can I rewrite this code to run the for next with a big number?
if you are invoking this method from the UI thread then it will pause for 1.4 minutes and android will close any program that does not respond for 5 seconds my this help you try to use AsyncTask or execute this call in another thread .