原文地址:
这篇文章讲解了调整我们的 gradle 内存设置,不但减小了内存占用同时又提高了一些性能。
gradle 插件 2.1 增加了 dex-in-process
来帮助开发者减少构建时间。Dex-in-process
允许你 dex 和 gradle 构建在同一个进程进行,过去是分开的单独进程影响性能。使用 gradle clean
使用 dex-in-process
需要2分钟时间,而不使用需要2分30秒。
要使用 dex-in-process
你只需要做一件事(除了使用2.1以上版本插件)
确认 dex 进程“适合” gradle 进程 就是说你要确保 grale 进程有足够的内存分配给 dex 步骤来完成整个操作。那该怎么做呢?
gradle.properties
里面有内存的设置。要是没有设置使用默认值,默认是1g大小。
dex 进程内存设置在 build.gradle
里面控制,默认大小1g。
所以最简单的方式就是增加你的 gradle 内存大小设置来配合你的 dex 步骤内存大小,如果 dex 使用内存大小是1g,那么给gradle内存设置为至少2g。我的图里 dex 内存是4g,给 gradle 5g的内存。对此你不用怀疑,gradle 将会给出一个警告 告诉你要使用 dex-in-process
你应该增加多少内存。
这样做,我的构建减少了30s
但是等等,如果我们仅仅需要做的是让 dex 进程适合gradle进程,也许可以试试另一种方式。我们减小 dex 进程 memeory 用量。我把 dex 进行大小减小到 1g,gradel 进程大小设置为 2g,dex-in-process
也是启用的,构建也很快。使用了更少内存,同样构建很快。
Gradle memory >= Dex memory + 1Gb !
使用大内存,能获得更多收益吗?
使用更大内存能构建更快吗?答案是否定的,我尝试把 grale 内存设置为20Gb,dex设置为10Gb,并没有什么改善,gradle 进程 2-4Gb,dex 进程1-2Gb 是较为合理的。