Android OutOfMemoryError: no se pudo asignar una asignación de bytes 57993496 con 16764448 bytes libres

Estoy tratando de countsincronizar mi variable gety una función auxiliar privada para la configuración basada en otros miembros. Múltiples hilos están llamando setCount()como deadlineNoteVisibley referencesAvailablecambian.

Con synchronizedsólo para el setCount()método, las cosas están bien, pero cuando agrego synchronized(this)a la get()llamada, me sale:

OutOfMemoryError: Failed to allocate a 57993496 byte allocation with 16764448 free bytes and 32MB until OOM

Código (escrito en Kotlin):

var count: Int = 0
    // Why does adding synchronized here explode?
    get() = synchronized(this) { count }
    private set

private fun setCount() {
    synchronized(this) {
        count = 0
        if (deadlineNoteVisible) {
            count += 1
        }
        if (referencesAvailable) {
            count += 1
        }
    }
}

Seguimiento de pila:

Error reporting crash
java.lang.OutOfMemoryError: Failed to allocate a 57993496 byte allocation with 16764448 free bytes and 32MB until OOM
    at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
    at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:125)
    at java.lang.StringBuffer.append(StringBuffer.java:278)
    at java.io.StringWriter.write(StringWriter.java:123)
    at com.android.internal.util.FastPrintWriter.flushLocked(FastPrintWriter.java:358)
    at com.android.internal.util.FastPrintWriter.appendLocked(FastPrintWriter.java:303)
    at com.android.internal.util.FastPrintWriter.write(FastPrintWriter.java:625)
    at com.android.internal.util.FastPrintWriter.append(FastPrintWriter.java:658)
    at java.io.PrintWriter.append(PrintWriter.java:691)
    at java.io.PrintWriter.append(PrintWriter.java:687)
    at java.io.Writer.append(Writer.java:198)
    at java.lang.Throwable.printStackTrace(Throwable.java:324)
    at java.lang.Throwable.printStackTrace(Throwable.java:300)
    at android.util.Log.getStackTraceString(Log.java:343)
    at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:61)
    at com.android.internal.os.RuntimeInit.-wrap0(RuntimeInit.java)
    at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:86)
    at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:249)
    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
Respuesta 1

Tengo una matriz de bytes y quiero hacer alguna manipulación sobre la base de los datos que tengo en esta matriz. El contenido de la matriz de bytes está en formato hexadecimal. byte [] señal = mensaje.getFieldValue ("...

Estoy tratando de encontrar un ejemplo del uso de Azure Adal (Oauth2) con Dropwizard, pero parece que no puedo encontrar nada. El ejemplo de Oauth2 en el sitio web de Dropwizard es realmente vago, parece que no puedo entender ...

Estoy tratando de optimizar el código que lee objetos del almacén de datos de Google. Usando Java y JDO, aquí está mi código: List <Article> articles = (List <Article>) query.execute (articleId); Lista <...

En primer lugar, esta no es la pregunta, sino la solución del problema que he enfrentado y pierdo 4,5 horas para encontrar la solución. avíseme si hay alguna alternativa mejor para administrar ...