如何在Android中增加堆大小?

时间:2014-08-21 21:18:15

标签: java android heap

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

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

我已经尝试设置android:largeHeap="true",但它没有明显的效果,所以我正在寻找一些不是对操作系统的礼貌请求,并且与折旧的{{1}有效地做同样的事情}

2 个答案:

答案 0 :(得分:3)

  

我正在寻找对操作系统不礼貌的请求并且与折旧的VMRuntime.getRuntime()有效的东西.setMinimumHeapSize(BIGGER_SIZE)

在Android SDK中无法执行此操作。否则,每个开发人员都会认为它们是特殊的雪花,并且在512MB设备上应该有16GB的系统RAM。

  

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

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

  

我已经优化了我的代码,因此我在任何循环中都没有变量初始化,并且在可能的情况下将事物声明为static和final。

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

答案 1 :(得分:0)

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

org.gradle.jvmargs = -Xmx1024m