0

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?

2
  • how many ttf files do you have? Commented Mar 31, 2024 at 7:52
  • A total of 113. Commented Apr 13, 2024 at 14:46

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.