0

所以我的问题与此类似: Android:如何在运行时增加堆大小?

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

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

4

2 回答 2

4

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

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

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

您可以使用getMemoryClass()and getLargeMemoryClass()(on ActivityManager) 查看使用android:largeHeap="true". 此外,请记住,这android:largeHeap="true"仅适用于 API Level 11+ 设备。

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

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

于 2014-08-21T21:46:07.320 回答
-1

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

org.gradle.jvmargs=-Xmx1024m

于 2018-07-14T14:16:12.860 回答