Skip to content

Commit f3d65cd

Browse files
adrian-wangpwendell
authored andcommitted
[SPARK-3068]remove MaxPermSize option for jvm 1.8
In JVM 1.8.0, MaxPermSize is no longer supported. In spark `stderr` output, there would be a line of Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 Author: Daoyuan Wang <[email protected]> Closes #2011 from adrian-wang/maxpermsize and squashes the following commits: ef1d660 [Daoyuan Wang] direct get java version in runtime 37db9c1 [Daoyuan Wang] code refine 3c1d554 [Daoyuan Wang] remove MaxPermSize option for jvm 1.8
1 parent 323cd92 commit f3d65cd

3 files changed

Lines changed: 15 additions & 4 deletions

File tree

bin/spark-class

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,14 @@ else
105105
exit 1
106106
fi
107107
fi
108+
JAVA_VERSION=$($RUNNER -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q')
108109

109110
# Set JAVA_OPTS to be able to load native libraries and to set heap size
110-
JAVA_OPTS="-XX:MaxPermSize=128m $OUR_JAVA_OPTS"
111+
if [ "$JAVA_VERSION" -ge 18 ]; then
112+
JAVA_OPTS="$OUR_JAVA_OPTS"
113+
else
114+
JAVA_OPTS="-XX:MaxPermSize=128m $OUR_JAVA_OPTS"
115+
fi
111116
JAVA_OPTS="$JAVA_OPTS -Xms$OUR_JAVA_MEM -Xmx$OUR_JAVA_MEM"
112117

113118
# Load extra JAVA_OPTS from conf/java-opts, if it exists

bin/spark-class2.cmd

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,13 @@ rem All drivers use SPARK_JAVA_OPTS + SPARK_DRIVER_MEMORY. The repl also uses SP
7777
)
7878

7979
rem Set JAVA_OPTS to be able to load native libraries and to set heap size
80-
set JAVA_OPTS=-XX:MaxPermSize=128m %OUR_JAVA_OPTS% -Djava.library.path=%SPARK_LIBRARY_PATH% -Xms%OUR_JAVA_MEM% -Xmx%OUR_JAVA_MEM%
80+
for /f "tokens=3" %%i in ('java -version 2^>^&1 ^| find "version"') do set jversion=%%i
81+
for /f "tokens=1 delims=_" %%i in ("%jversion:~1,-1%") do set jversion=%%i
82+
if "%jversion%" geq "1.8.0" (
83+
set JAVA_OPTS=%OUR_JAVA_OPTS% -Djava.library.path=%SPARK_LIBRARY_PATH% -Xms%OUR_JAVA_MEM% -Xmx%OUR_JAVA_MEM%
84+
) else (
85+
set JAVA_OPTS=-XX:MaxPermSize=128m %OUR_JAVA_OPTS% -Djava.library.path=%SPARK_LIBRARY_PATH% -Xms%OUR_JAVA_MEM% -Xmx%OUR_JAVA_MEM%
86+
)
8187
rem Attention: when changing the way the JAVA_OPTS are assembled, the change must be reflected in CommandUtils.scala!
8288

8389
rem Test whether the user has built Spark

core/src/main/scala/org/apache/spark/deploy/worker/CommandUtils.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ object CommandUtils extends Logging {
6464
Seq()
6565
}
6666

67-
val permGenOpt = Seq("-XX:MaxPermSize=128m")
68-
6967
// Figure out our classpath with the external compute-classpath script
7068
val ext = if (System.getProperty("os.name").startsWith("Windows")) ".cmd" else ".sh"
7169
val classPath = Utils.executeAndGetOutput(
7270
Seq(sparkHome + "/bin/compute-classpath" + ext),
7371
extraEnvironment = command.environment)
7472
val userClassPath = command.classPathEntries ++ Seq(classPath)
7573

74+
val javaVersion = System.getProperty("java.version")
75+
val permGenOpt = if (!javaVersion.startsWith("1.8")) Some("-XX:MaxPermSize=128m") else None
7676
Seq("-cp", userClassPath.filterNot(_.isEmpty).mkString(File.pathSeparator)) ++
7777
permGenOpt ++ libraryOpts ++ workerLocalOpts ++ command.javaOpts ++ memoryOpts
7878
}

0 commit comments

Comments
 (0)