Gson toJson 转换 OutOfMemory(OOM)

Gson toJson convert OutOfMemory(OOM)

val gson = GsonBuilder().setPrettyPrinting().create()

Log.e("surveyListPretreatment",gson.toJson(
    SurveyTab(viewModel.owner.treat).apply {
        surveyListPretreatment = viewModel.surveyTabs.surveyListPretreatment
    })
)

java.lang.OutOfMemoryError:无法分配 150994952 字节分配,其中 25165824 个空闲字节和 103MB 直到 OOM,最大允许占用空间 118228816,增长限制 201326592

因为,

DTO 有

var imgByteArray:ByteArray? = null //bitmap convert byteArray => It's OOM Generated...

我该如何解决?

Jake Wharton 已经在 GitHub Issues.

上对此发表了评论

There's no magic fix. You either need a larger heap or a smaller object.

如果你能把你的物体变小,那将是最优的解决方案。如果您的应用确实需要那么多内存,您可以尝试在清单中为您的应用设置 android:largeHeap="true"

参考:

  1. http://developer.android.com/reference/android/R.styleable.html#AndroidManifestApplication_largeHeap
  2. Out of memory exception in gson.fromJson()