Android LazyColumn OutOfMemoryError

24 Views Asked by At

Android LazyColumn OutOfMemoryError

To display all font styles in the font folder(res/font) with LazyColumn:

font folder(res/font) has many ttf file.

@Composable
fun TextTtfLearn(){
    val context: Context = LocalContext.current // It's not the context reason
    val fontList: MutableList<FontDate> = mutableListOf()
    val fields: Array<Field> = R.font::class.java.fields
    try {
        for (field in fields){
            if (java.lang.reflect.Modifier.isStatic(field.modifiers)){
                val fontId = field.getInt(null)
                val fontName = field.name
                fontList.add(FontDate(fontId = fontId, fontName = fontName))
            }
        }
    }catch (e: Exception){
        Log.e(TAG, "TextTtfLearn: ", e)
    }
    fontList.forEach{ fontDate: FontDate ->
        Log.i(TAG, "TextTtfLearn -> fontDate: $fontDate")
    }
    LazyColumn{
        items(fontList){ fontDate: FontDate ->
            Text(
                text = "Hello World!fontName: ${fontDate.fontName}",
                fontFamily = FontFamily(
                    Font(fontDate.fontId, FontWeight.W700)
                ),
                modifier = Modifier.clickable(
                    onClick = {
                        Toast.makeText(context,
                            "click", Toast.LENGTH_SHORT).show()
                    },
                    indication = null,
                    interactionSource = MutableInteractionSource()
                ),
            )
        }
    }
}

log as follows:

2024-03-31 10:35:38.347 28832-28851 System                  textlearn                   W  A resource failed to call close. 
2024-03-31 10:35:38.347 28832-28851 System                  textlearn                   W  A resource failed to call close. 
2024-03-31 10:35:40.186 28832-28934 ProfileInstaller        textlearn                   D  Installing profile for edu.tyut.textlearn
2024-03-31 10:35:41.156 28832-28849 .textlear               textlearn                   I  Clamp target GC heap from 387MB to 384MB
2024-03-31 10:35:41.396 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.396 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.402 28832-28832 .textlear               textlearn                   I  Alloc young concurrent copying GC freed 2977(145KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 381MB/384MB/384MB, paused 23us total 6.033ms
2024-03-31 10:35:41.402 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.415 28832-28832 .textlear               textlearn                   I  Clamp target GC heap from 405MB to 384MB
2024-03-31 10:35:41.415 28832-28832 .textlear               textlearn                   I  Alloc concurrent copying GC freed 373(27KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 381MB/384MB/384MB, paused 20us total 12.954ms
2024-03-31 10:35:41.415 28832-28832 .textlear               textlearn                   I  Forcing collection of SoftReferences for 12MB allocation
2024-03-31 10:35:41.415 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.428 28832-28832 .textlear               textlearn                   I  Clamp target GC heap from 404MB to 384MB
2024-03-31 10:35:41.428 28832-28832 .textlear               textlearn                   I  Alloc concurrent copying GC freed 9236(392KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 380MB/384MB/384MB, paused 14us total 12.769ms
2024-03-31 10:35:41.428 28832-28832 .textlear               textlearn                   W  Throwing OutOfMemoryError "Failed to allocate a 13457183 byte allocation with 3324264 free bytes and 3246KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 5653948 kB)
2024-03-31 10:35:41.428 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.428 28832-28832 chatty                  textlearn                   I  uid=10631(edu.tyut.textlearn) identical 1 line
2024-03-31 10:35:41.432 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.444 28832-28832 .textlear               textlearn                   I  Clamp target GC heap from 404MB to 384MB
2024-03-31 10:35:41.444 28832-28832 .textlear               textlearn                   I  Alloc concurrent copying GC freed 3(16KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 380MB/384MB/384MB, paused 18us total 12.010ms
2024-03-31 10:35:41.444 28832-28832 .textlear               textlearn                   I  Forcing collection of SoftReferences for 12MB allocation
2024-03-31 10:35:41.444 28832-28832 .textlear               textlearn                   I  Starting a blocking GC Alloc
2024-03-31 10:35:41.456 28832-28832 .textlear               textlearn                   I  Clamp target GC heap from 404MB to 384MB
2024-03-31 10:35:41.456 28832-28832 .textlear               textlearn                   I  Alloc concurrent copying GC freed 8(16KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 380MB/384MB/384MB, paused 14us total 12.410ms
2024-03-31 10:35:41.457 28832-28832 .textlear               textlearn                   W  Throwing OutOfMemoryError "Failed to allocate a 13457183 byte allocation with 3324328 free bytes and 3246KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 5653948 kB)
2024-03-31 10:35:41.462 28832-28832 idRuntime               textlearn                   E  FATAL EXCEPTION: main
                                                                                                    Process: edu.tyut.textlearn, PID: 28832
                                                                                                    java.lang.OutOfMemoryError: Failed to allocate a 13457183 byte allocation with 3324328 free bytes and 3246KB until OOM, target footprint 402653184, growth limit 402653184
                                                                                                        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                                                        at java.nio.DirectByteBuffer$MemoryRef.<init>(DirectByteBuffer.java:70)
                                                                                                        at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:258)
                                                                                                        at android.graphics.fonts.Font$Builder.createBuffer(Font.java:248)
                                                                                                        at android.graphics.fonts.Font$Builder.<init>(Font.java:172)
                                                                                                        at android.graphics.Typeface$Builder.<init>(Typeface.java:441)
                                                                                                        at android.content.res.ResourcesImpl.loadFont(ResourcesImpl.java:1090)
                                                                                                        at android.content.res.Resources.getFont(Resources.java:478)
                                                                                                        at androidx.compose.ui.text.font.ResourceFontHelper.load(AndroidFontLoader.android.kt:88)
                                                                                                        at androidx.compose.ui.text.font.AndroidFontLoader_androidKt.load(AndroidFontLoader.android.kt:73)
                                                                                                        at androidx.compose.ui.text.font.AndroidFontLoader_androidKt.access$load(AndroidFontLoader.android.kt:1)
                                                                                                        at androidx.compose.ui.text.font.AndroidFontLoader.loadBlocking(AndroidFontLoader.android.kt:47)
                                                                                                        at androidx.compose.ui.text.font.AndroidFontLoader.loadBlocking(AndroidFontLoader.android.kt:37)
                                                                                                        at androidx.compose.ui.text.font.FontListFontFamilyTypefaceAdapterKt.firstImmediatelyAvailable(FontListFontFamilyTypefaceAdapter.kt:187)
                                                                                                        at androidx.compose.ui.text.font.FontListFontFamilyTypefaceAdapterKt.access$firstImmediatelyAvailable(FontListFontFamilyTypefaceAdapter.kt:1)
                                                                                                        at androidx.compose.ui.text.font.FontListFontFamilyTypefaceAdapter.resolve(FontListFontFamilyTypefaceAdapter.kt:129)
                                                                                                        at androidx.compose.ui.text.font.FontFamilyResolverImpl$resolve$result$1.invoke(FontFamilyResolver.kt:93)
                                                                                                        at androidx.compose.ui.text.font.FontFamilyResolverImpl$resolve$result$1.invoke(FontFamilyResolver.kt:92)
                                                                                                        at androidx.compose.ui.text.font.TypefaceRequestCache.runCached(FontFamilyResolver.kt:185)
                                                                                                        at androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve(FontFamilyResolver.kt:92)
                                                                                                        at androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve-DPcqOEQ(FontFamilyResolver.kt:79)
                                                                                                        at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics$resolveTypeface$1.invoke-DPcqOEQ(AndroidParagraphIntrinsics.android.kt:92)
                                                                                                        at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics$resolveTypeface$1.invoke(AndroidParagraphIntrinsics.android.kt:90)
                                                                                                        at androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt.applySpanStyle(TextPaintExtensions.android.kt:63)
                                                                                                        at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics.<init>(AndroidParagraphIntrinsics.android.kt:109)
                                                                                                        at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt.ActualParagraphIntrinsics(AndroidParagraphIntrinsics.android.kt:184)
                                                                                                        at androidx.compose.ui.text.ParagraphIntrinsicsKt.ParagraphIntrinsics(ParagraphIntrinsics.kt:98)
                                                                                                        at androidx.compose.ui.text.MultiParagraphIntrinsics.<init>(MultiParagraphIntrinsics.kt:102)
                                                                                                        at androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.setLayoutDirection(MultiParagraphLayoutCache.kt:246)
                                                                                                        at androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.layoutText-K40F9xA(MultiParagraphLayoutCache.kt:271)
                                                                                                        at androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.layoutWithConstraints-K40F9xA(MultiParagraphLayoutCache.kt:158)
                                                                                                        at androidx.compose.foundation.text.modifiers.TextAnnotatedStringNode.measure-3p2s80s(TextAnnotatedStringNode.kt:266)
                                                                                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
                                                                                                        at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646)
                                                                                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
2024-03-31 10:35:41.462 28832-28832 AndroidRuntime                   textlearn                   E      at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
                                                                                                        at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2299)
                                                                                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
                                                                                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
                                                                                                        at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
                                                                                                        at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:35)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
                                                                                                        at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(LazyLayoutMeasureScope.kt:123)
                                                                                                        at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure(LazyListMeasuredItemProvider.kt:48)
                                                                                                        at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-CD5nmq0(LazyListMeasure.kt:124)
                                                                                                        at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(LazyList.kt:306)
                                                                                                        at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:184)
                                                                                                        at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(LazyLayout.kt:87)
                                                                                                        at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke(LazyLayout.kt:80)
                                                                                                        at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:866)
                                                                                                        at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
                                                                                                        at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646)
                                                                                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
                                                                                                        at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2299)
                                                                                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
                                                                                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
                                                                                                        at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
                                                                                                        at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:35)
                                                                                                        at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:560)
                                                                                                        at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1140)
                                                                                                        at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:321)
                                                                                                        at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(MeasureAndLayoutDelegate.kt:389)
                                                                                                        at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(AndroidComposeView.android.kt:890)
                                                                                                        at androidx.compose.ui.node.LayoutNode.forceRemeasure(LayoutNode.kt:1214)
                                                                                                        at androidx.compose.foundation.lazy.LazyListState.onScroll$foundation_release(LazyListState.kt:301)
2024-03-31 10:35:41.463 28832-28832 AndroidRuntime                   textlearn                   E      at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:162)
                                                                                                        at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:162)
                                                                                                        at androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy(ScrollableState.kt:166)
                                                                                                        at androidx.compose.foundation.gestures.ScrollingLogic$dispatchScroll$performScroll$1.invoke-MK-Hz9U(Scrollable.kt:425)
                                                                                                        at androidx.compose.foundation.gestures.ScrollingLogic$dispatchScroll$performScroll$1.invoke(Scrollable.kt:417)
                                                                                                        at androidx.compose.foundation.AndroidEdgeEffectOverscrollEffect.applyToScroll-Rhakbz0(AndroidOverscroll.kt:180)
                                                                                                        at androidx.compose.foundation.gestures.ScrollingLogic.dispatchScroll-3eAAhYA(Scrollable.kt:438)
                                                                                                        at androidx.compose.foundation.gestures.ScrollDraggableState.dragBy(Scrollable.kt:526)
                                                                                                        at androidx.compose.foundation.gestures.DraggableNode$pointerInputNode$1$1$1$1.invokeSuspend(Draggable.kt:311)
                                                                                                        at androidx.compose.foundation.gestures.DraggableNode$pointerInputNode$1$1$1$1.invoke(Unknown Source:8)
                                                                                                        at androidx.compose.foundation.gestures.DraggableNode$pointerInputNode$1$1$1$1.invoke(Unknown Source:4)
                                                                                                        at androidx.compose.foundation.gestures.ScrollDraggableState$drag$2.invokeSuspend(Scrollable.kt:534)
                                                                                                        at androidx.compose.foundation.gestures.ScrollDraggableState$drag$2.invoke(Unknown Source:8)
                                                                                                        at androidx.compose.foundation.gestures.ScrollDraggableState$drag$2.invoke(Unknown Source:4)
                                                                                                        at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invokeSuspend(ScrollableState.kt:181)
                                                                                                        at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(Unknown Source:8)
                                                                                                        at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(Unknown Source:4)
                                                                                                        at androidx.compose.foundation.MutatorMutex$mutateWith$2.invokeSuspend(MutatorMutex.kt:173)
                                                                                                        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
                                                                                                        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(AndroidUiDispatcher.android.kt:81)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(AndroidUiDispatcher.android.kt:41)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.run(AndroidUiDispatcher.android.kt:57)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:938)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loop(Looper.java:271)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8305)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:992)
                                                                                                        Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@7df0e34, androidx.compose.runtime.BroadcastFrameClock@85145d, StandaloneCoroutine{Cancelling}@1cc31d2, AndroidUiDispatcher@58b62a3]

How do I solve the OOM problem?

0

There are 0 best solutions below