diff --git a/dev/mima b/dev/mima
index bed5cd042634e83969bc80a8f65cde7423c95563..2952fa65d42ff2bd3bd98bc822be5f46116b24c9 100755
--- a/dev/mima
+++ b/dev/mima
@@ -27,16 +27,21 @@ cd "$FWDIR"
 echo -e "q\n" | build/sbt oldDeps/update
 rm -f .generated-mima*
 
+generate_mima_ignore() {
+  SPARK_JAVA_OPTS="-XX:MaxPermSize=1g -Xmx2g" \
+    ./bin/spark-class org.apache.spark.tools.GenerateMIMAIgnore
+}
+
 # Generate Mima Ignore is called twice, first with latest built jars
 # on the classpath and then again with previous version jars on the classpath.
 # Because of a bug in GenerateMIMAIgnore that when old jars are ahead on classpath
 # it did not process the new classes (which are in assembly jar).
-./bin/spark-class org.apache.spark.tools.GenerateMIMAIgnore
+generate_mima_ignore
 
 export SPARK_CLASSPATH="`find lib_managed \( -name '*spark*jar' -a -type f \) | tr "\\n" ":"`"
 echo "SPARK_CLASSPATH=$SPARK_CLASSPATH"
 
-./bin/spark-class org.apache.spark.tools.GenerateMIMAIgnore
+generate_mima_ignore
 
 echo -e "q\n" | build/sbt mima-report-binary-issues | grep -v -e "info.*Resolving"
 ret_val=$?