【问题标题】:How to increase heap size in Android?如何在 Android 中增加堆大小?
【发布时间】:2014-10-15 15:56:09
【问题描述】:

所以我的问题与此类似: Android: how to increase heap size at runtime?

但是,由于我不是在处理缓存,因此提供的关于更好的缓存实现的答案不适用于我。我的目标是分配一个大堆作为我的timing issue 的临时解决方案,我相信 GC_CONCURRENT 正在影响我的目标是分配一个堆,这样 GC_CONCURRENT 就不会发生。我想强调我没有内存泄漏,因为当 GC_CONCURRENT 运行时它总是释放 15% 并且这个数字不会下降,我已经优化了我的代码,这样我在任何循环中都没有变量初始化,事情是尽可能声明为静态和最终的。

我已经尝试设置android:largeHeap="true",但它没有明显的效果,所以我正在寻找一些对操作系统来说不是礼貌请求的东西,并且实际上与贬值的VMRuntime.getRuntime().setMinimumHeapSize(BIGGER_SIZE) 做同样的事情

【问题讨论】:

    标签: java android heap-size


    【解决方案1】:

    如果您想避免使用 largeHeap"true",还有另一个用于调整内存设置的替代选项。您所要做的就是添加/替换 gradle.properties 文件中的现有行

    org.gradle.jvmargs=-Xmx1024m

    【讨论】:

    • 与app运行时内存无关!这是 android studio 中的 gradle 构建时间
    【解决方案2】:

    我正在寻找一些对操作系统来说不是礼貌请求的东西,它实际上与折旧的 VMRuntime.getRuntime().setMinimumHeapSize(BIGGER_SIZE) 做同样的事情

    在 Android SDK 中无法做到这一点。否则,每个开发人员都会认为他们是一片特殊的雪花,应该在 512MB 的设备上拥有 16GB 的系统 RAM。

    我试过设置 android:largeHeap="true" 但没有明显效果

    您可以使用getMemoryClass()getLargeMemoryClass()(在ActivityManager 上)查看使用android:largeHeap="true" 时堆限制的差异。另外,请记住,android:largeHeap="true" 仅适用于 API 级别 11+ 的设备。

    我已经优化了我的代码,使得我在任何循环中都没有变量初始化,并且在可能的情况下将事物声明为静态和最终。

    当然欢迎您使用 DDMS 分配跟踪器、堆转储等来确定触发 GC 的内存使用源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-04
      • 2011-05-06
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多