1
내 바코드 스캐너 응용 프로그램에서 zbar lib를 사용하여 바코드를 스캔합니다. OutOfMemoryError로서 런타임 예외를 Thowing하고 있습니다.libzbarjni.so에는 텍스트 재배치가 있습니다. 이것은 메모리 낭비이며 보안 강화를 방지합니다.
아무도이 문제를 해결할 수 있도록 도와주세요.
로그 캣 :
2-16 13:06:01.635: W/linker(15501): libzbarjni.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
12-16 13:06:06.483: E/art(15501): Throwing OutOfMemoryError "Failed to allocate a 53654136 byte allocation with 16777216 free bytes and 47MB until OOM"
12-16 13:06:06.483: E/AndroidRuntime(15501): Error reporting crash
12-16 13:06:06.483: E/AndroidRuntime(15501): java.lang.OutOfMemoryError: Failed to allocate a 53654136 byte allocation with 16777216 free bytes and 47MB until OOM
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:125)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.StringBuffer.append(StringBuffer.java:278)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.io.StringWriter.write(StringWriter.java:123)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.util.FastPrintWriter.flushLocked(FastPrintWriter.java:358)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.util.FastPrintWriter.appendLocked(FastPrintWriter.java:303)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.util.FastPrintWriter.write(FastPrintWriter.java:625)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.util.FastPrintWriter.append(FastPrintWriter.java:658)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.io.PrintWriter.append(PrintWriter.java:691)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.io.PrintWriter.append(PrintWriter.java:31)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.Throwable.printStackTrace(Throwable.java:324)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.Throwable.printStackTrace(Throwable.java:300)
12-16 13:06:06.483: E/AndroidRuntime(15501): at android.util.Log.getStackTraceString(Log.java:335)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:59)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.os.RuntimeInit.access$200(RuntimeInit.java:43)
12-16 13:06:06.483: E/AndroidRuntime(15501): at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:85)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
12-16 13:06:06.483: E/AndroidRuntime(15501): at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
라이브러리가 메모리에 매우 효율적이지 않은 것처럼 보입니다. 이는 안드로이드 어플리케이션에서 매우 중요합니다. 어쩌면 [ZXing] (https://github.com/zxing/zxing/)을 대신 살펴볼 수 있습니다. –
예, 옵션이 될 것이지만 zbar lib를 사용하면 zxing보다 훨씬 빠르고 효율적입니다. – gIrL
이전에 zbar에 대해 들어 보지 못했지만 ZXing이 많은 Android 앱에서 바코드/QR 코드를 스캔하는 데 사용된다는 사실을 알고 있습니다. 게다가 조기에 최적화해서는 안됩니다. ZXing을 사용해보십시오. 일단 충분히 빠른 성능을 내지 못한다는 증거가 있으면 다른 옵션을 고려하십시오. –