From 22ba7869f6e211f5a692235f52687a6acdd71afc Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Wed, 29 Jul 2015 12:34:13 -0700 Subject: [PATCH] Release text when finishing StaticLayout.Builder DynamicLayout reuses a StaticLayout.Builder object to avoid having to allocate. There is a "finish" method that releases any expensive internal state of the builder object, but it didn't release a reference to the text object (which in turn may contain references to lots of other things, especially if it's a Spannable). This patch releases the text, as well as a few other arrays, at time of finish. Bug: 22822416 Change-Id: Icc8b6cd41a9a2d11689df7bd1b9f524c6524f706 --- core/java/android/text/StaticLayout.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index efc9e1ae4aa60..3b0def29f006d 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -112,6 +112,10 @@ public class StaticLayout extends Layout { // release any expensive state /* package */ void finish() { nFinishBuilder(mNativePtr); + mText = null; + mPaint = null; + mLeftIndents = null; + mRightIndents = null; mMeasuredText.finish(); }