Android Gradle: What is javaMaxHeapSize "4g"?
Solution 1
As it mentioned in the answer above, it is just an option to specify the maximum memory allocation pool for a Java Virtual Machine (JVM) for dex operation. And it's the same, as to provide to java the -xmx
argument. Due to it's source codes from here, it's setter look like:
if (theJavaMaxHeapSize.matches("\\d+[kKmMgGtT]?")) {
javaMaxHeapSize = theJavaMaxHeapSize
} else {
throw new IllegalArgumentException(
"Invalid max heap size DexOption. See `man java` for valid -Xmx arguments.")
}
So, you can see, that the accepted value should match the \d+[kKmMgGtT]?
pattern, and hence not, it even refers to the man java
to get to know, how to set the -xmx
. You can read the man page here. And it says, that this flag:
Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is chosen at runtime based on system configuration.
In your example, 4g
is 4 Gigabytes and this is a maximum heap size for dex operation.
Solution 2
This is an undocumented option to increase the heap size for dex operation: https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ
![Kamalakannan J](https://i.stack.imgur.com/uoUqu.jpg?s=256&g=1)
Kamalakannan J
Certified AWS Developer Associate and Solutions Architect Associate. TLDR; 8+ years experience with Node.js and 2+ years experience with React. :) Being in love with JavaScript since 2013. Worked both on MEAN and MERN stack. Love to work with AWS too. Have good experience in Android app development(worked on 2 android apps). Tried lots of tools from design to deployment. I evolve myself by not restricting to any specific language and platform. I love learning.
Updated on July 07, 2020Comments
-
Kamalakannan J almost 4 years
In an android project, build.gradle file, I have been through this line
dexOptions{ javaMaxHeapSize "4g" }
I would like to know the exact purpose of this javaMaxHeapSize and what does that 4g means. What are other values I can give ?
-
OldSchool4664 almost 7 yearsXmx should be set to at least javaMaxHeapSize. In your example it is half the size.
-
kimkevin almost 7 years@OldSchool4664 he is right. it should be more than 4096m.