所以我的问题与此类似: Android: how to increase heap size at runtime?
但是,由于我没有处理缓存,所以提供有关更好的缓存实现的答案并不适用于我。我的目标是将一个大堆分配为我认为GC_CONCURRENT正在影响的timing issue的临时解决方案,我的目标是分配一个堆,这样就不会发生GC_CONCURRENT。我想强调一下,我没有内存泄漏,因为当GC_CONCURRENT运行它总是释放15%而且这个数字不会下降而且我已经优化了我的代码,这样我在任何循环中都没有变量初始化,而且事情是尽可能声明静态和最终。
我已经尝试设置android:largeHeap="true"
,但它没有明显的效果,所以我正在寻找一些不是对操作系统的礼貌请求,并且与折旧的{{1}有效地做同样的事情}
答案 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