You may wish to follow the issue 2794 discussion at
http://code.google.com/p/android/issues/detail?id=2794 and consider
the use of addCallbackBuffer() and setPreviewCallbackWithBuffer().

Regards

On Jun 6, 8:53 pm, Jay Ha <nicejae...@gmail.com> wrote:
> Hi.
>
> I'm writing an Augmented Reallity codes that should works in realtime,
>
> But the VM's garbage collection hinders my program's performance.
>
> I checked my program's execution time for each in OnPrevFrame(byte[],
> Camera)
>
> and it execution time increases from around 50ms  to 120ms at just
> after each garbage collection.
>
> I copied parts of logs below.
> (local time is just before and after of signal processing, and global
> time is time stamps for every onPreviewFrame() calling )
> -----------------------------------------------------------------------------------------------------------------------------------------
> 06-06 18:42:26.340: WARN/matchTarget(725):     global 151844ms, local
> 167ms
> 06-06 18:42:26.390: WARN/matchTarget(725):     global 55ms, local 54ms
> 06-06 18:42:26.510: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 20
> objects / 346432 bytes in 88ms
> 06-06 18:42:26.510: WARN/matchTarget(725):     global 119ms, local
> 115ms
> 06-06 18:42:26.600: WARN/matchTarget(725):     global 83ms, local 75ms
> 06-06 18:42:26.670: WARN/matchTarget(725):     global 76ms, local 70ms
> 06-06 18:42:26.740: WARN/matchTarget(725):     global 66ms, local 63ms
> 06-06 18:42:26.820: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 73
> objects / 464096 bytes in 55ms
> 06-06 18:42:26.830: WARN/matchTarget(725):     global 95ms, local 94ms
> 06-06 18:42:26.890: WARN/matchTarget(725):     global 57ms, local 56ms
> 06-06 18:42:26.940: WARN/matchTarget(725):     global 46ms, local 45ms
> 06-06 18:42:27.000: WARN/matchTarget(725):     global 59ms, local 59ms
> 06-06 18:42:27.070: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 144
> objects / 466776 bytes in 56ms
> 06-06 18:42:27.080: WARN/matchTarget(725):     global 80ms, local 79ms
> 06-06 18:42:27.150: WARN/matchTarget(725):     global 71ms, local 65ms
> 06-06 18:42:27.210: WARN/matchTarget(725):     global 61ms, local 60ms
> 06-06 18:42:27.250: WARN/matchTarget(725):     global 41ms, local 39ms
> 06-06 18:42:27.310: WARN/matchTarget(725):     global 57ms, local 41ms
> 06-06 18:42:27.350: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 207
> objects / 584128 bytes in 39ms
> 06-06 18:42:27.420: WARN/matchTarget(725):     global 116ms, local
> 59ms
> 06-06 18:42:27.470: WARN/matchTarget(725):     global 50ms, local 49ms
> 06-06 18:42:27.530: WARN/matchTarget(725):     global 58ms, local 55ms
> 06-06 18:42:27.620: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 210
> objects / 353680 bytes in 58ms
> 06-06 18:42:27.630: WARN/matchTarget(725):     global 96ms, local 95ms
> 06-06 18:42:27.690: WARN/matchTarget(725):     global 61ms, local 57ms
> 06-06 18:42:27.740: WARN/matchTarget(725):     global 57ms, local 55ms
> 06-06 18:42:27.820: WARN/matchTarget(725):     global 76ms, local 68ms
> 06-06 18:42:27.870: WARN/matchTarget(725):     global 49ms, local 46ms
> 06-06 18:42:27.900: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 226
> objects / 469944 bytes in 34ms
> 06-06 18:42:27.970: WARN/matchTarget(725):     global 97ms, local 55ms
> 06-06 18:42:28.000: WARN/matchTarget(725):     global 39ms, local 38ms
> 06-06 18:42:28.080: WARN/matchTarget(725):     global 80ms, local 61ms
> 06-06 18:42:28.170: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 220
> objects / 469184 bytes in 50ms
> 06-06 18:42:28.170: WARN/matchTarget(725):     global 86ms, local 84ms
> 06-06 18:42:28.230: WARN/matchTarget(725):     global 60ms, local 52ms
> 06-06 18:42:28.280: WARN/matchTarget(725):     global 52ms, local 51ms
> 06-06 18:42:28.340: WARN/matchTarget(725):     global 61ms, local 59ms
> 06-06 18:42:28.420: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 193
> objects / 468200 bytes in 53ms
> 06-06 18:42:28.430: WARN/matchTarget(725):     global 82ms, local 81ms
> 06-06 18:42:28.490: WARN/matchTarget(725):     global 64ms, local 57ms
> 06-06 18:42:28.550: WARN/matchTarget(725):     global 61ms, local 60ms
> 06-06 18:42:28.610: WARN/matchTarget(725):     global 57ms, local 56ms
> 06-06 18:42:28.690: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 205
> objects / 468832 bytes in 58ms
> 06-06 18:42:28.700: WARN/matchTarget(725):     global 88ms, local 86ms
> 06-06 18:42:28.750: WARN/matchTarget(725):     global 58ms, local 55ms
> 06-06 18:42:28.810: WARN/matchTarget(725):     global 54ms, local 53ms
> 06-06 18:42:28.860: WARN/matchTarget(725):     global 52ms, local 51ms
> 06-06 18:42:28.990: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 226
> objects / 469544 bytes in 42ms
> 06-06 18:42:28.990: WARN/matchTarget(725):     global 134ms, local
> 100ms
> 06-06 18:42:29.060: WARN/matchTarget(725):     global 62ms, local 52ms
> 06-06 18:42:29.100: WARN/matchTarget(725):     global 49ms, local 47ms
> 06-06 18:42:29.160: WARN/matchTarget(725):     global 51ms, local 50ms
> 06-06 18:42:29.240: DEBUG/dalvikvm(725): GC_FOR_MALLOC freed 197
> objects / 468320 bytes in 52ms
> 06-06 18:42:29.240: WARN/matchTarget(725):     global 84ms, local 83ms
> 06-06 18:42:29.290: WARN/matchTarget(725):     global 51ms, local 43ms
> 06-06 18:42:29.350: WARN/matchTarget(725):     global 53ms, local 39ms
> 06-06 18:42:29.410: WARN/matchTarget(725):     global 69ms, local 44ms
> 06-06 18:42:29.470: WARN/matchTarget(725):     global 54ms, local 44ms
> -----------------------------------------------------------------------------------------------------------------------------------------
>
> Also I executed onPreviewFrame without any signal processing on it,
> but
>
> the garbage collection is also carried showing debegging message
> around 60ms it spends for memory release.
>
> Is this garbage collection come from releasing byte[] yuvs image data?
> ( i uses 320x240 thumb nail )
>
> then... this clealy comes from Java's limitation, so there will be no
> hope for improvement unless
>
> I found a way to directly access camera device? do you think this is
> feasible?
>
> Hope listen to others' comments.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to