Skip to content

Commit ed94f11

Browse files
[ISSUE #1870] Add Support for Java 9+ and compatible to previous Java version (#2210)
* add jdk11 jvm option * add jdk11 jvm option for server * fix jdk11 jvm option for server * [maven-release-plugin] prepare for next development iteration * add support JVM Flag for Java version not less than 9 (including Java 9 - 14) * add support JVM Flag for Java version not less than 9 (including Java 9 - 14) in windows env * remove useless comment Co-authored-by: zhanghaoxin-at-826767166263 <COk6iTbDdOqj/yq53u9n9vPTy+3pmZNcm4mKOhImudI=> Co-authored-by: rongtongjin <794220751@qq.com>
1 parent ea7acf4 commit ed94f11

File tree

6 files changed

+108
-39
lines changed

6 files changed

+108
-39
lines changed

distribution/bin/runbroker.cmd

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%
2828
rem ===========================================================================================
2929
rem JVM Configuration
3030
rem ===========================================================================================
31+
32+
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do @set "JAVA_VERSION=%%j"
33+
if %JAVA_VERSION% EQU 1 goto java8-
34+
goto java9+
35+
36+
:java8-
3137
set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g"
3238
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
3339
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:%USERPROFILE%\mq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
@@ -38,5 +44,16 @@ set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g"
3844
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
3945
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs=%BASE_DIR%lib"
4046
set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%"
47+
goto end
48+
:java9+
49+
set "JAVA_OPT=%JAVA_OPT% --add-exports java.base/jdk.internal.ref=ALL-UNNAMED -server -Xms8g -Xmx8g -Xmn4g"
50+
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
51+
set "JAVA_OPT=%JAVA_OPT% -Xlog:gc*=info,safepoint=debug:file=%USERPROFILE%\mq_gc.log:utctime,level,tags:filecount=5,filesize=30M"
52+
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
53+
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
54+
set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g"
55+
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
56+
set "JAVA_OPT=%JAVA_OPT% --class-path="%CLASSPATH%";"%BASE_DIR%lib\*""
57+
:end
4158

4259
"%JAVA%" %JAVA_OPT% %*

distribution/bin/runbroker.sh

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,37 @@ choose_gc_log_directory()
6464

6565
choose_gc_log_directory
6666

67-
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
68-
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
69-
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
70-
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
71-
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
72-
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
73-
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
74-
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
75-
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:${JAVA_HOME}/lib/ext"
76-
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
77-
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
78-
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
67+
version=$($JAVA -version 2>&1 | awk -F '"' '/version/ {print $2}')
68+
version=${version%.*.*}
69+
if [[ "$version" -ge 9 ]]; then
70+
JAVA_OPT="${JAVA_OPT} --add-exports java.base/jdk.internal.ref=ALL-UNNAMED -server -Xms8g -Xmx8g -Xmn4g"
71+
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
72+
JAVA_OPT="${JAVA_OPT} -Xlog:gc*=info,safepoint=debug:file=${GC_LOG_DIR}/rmq_broker_gc_%p_%t.log:utctime,level,tags:filecount=5,filesize=30M"
73+
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
74+
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
75+
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
76+
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
77+
JAVA_OPT="${JAVA_OPT} --class-path=${JAVA_HOME}/jre/lib/ext/*:${BASE_DIR}/lib/*:${CLASSPATH}:${JAVA_HOME}/lib/ext"
78+
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
79+
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
80+
else
81+
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
82+
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
83+
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
84+
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
85+
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
86+
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
87+
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
88+
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
89+
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:${JAVA_HOME}/lib/ext"
90+
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
91+
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
92+
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
93+
fi
94+
95+
96+
97+
7998

8099
numactl --interleave=all pwd > /dev/null 2>&1
81100
if [ $? -eq 0 ]

distribution/bin/runserver.cmd

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,25 @@ for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd
2626

2727
set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%
2828

29+
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do @set "JAVA_VERSION=%%j"
30+
if %JAVA_VERSION% EQU 1 goto java8-
31+
goto java9+
32+
33+
:java8-
2934
set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
3035
set "JAVA_OPT=%JAVA_OPT% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
3136
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:"%USERPROFILE%\rmq_srv_gc.log" -XX:+PrintGCDetails"
3237
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
3338
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
3439
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs=%BASE_DIR%lib"
3540
set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""
41+
goto end
42+
:java9+
43+
set "JAVA_OPT=%JAVA_OPT% --add-exports java.base/jdk.internal.ref=ALL-UNNAMED -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
44+
set "JAVA_OPT=%JAVA_OPT% -Xlog:gc*=info,safepoint=debug:file=%USERPROFILE%\rmq_srv_gc.log:utctime,level,tags:filecount=5,filesize=30M"
45+
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
46+
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
47+
set "JAVA_OPT=%JAVA_OPT% --class-path="%CLASSPATH%";"%BASE_DIR%lib\*""
48+
:end
3649

3750
"%JAVA%" %JAVA_OPT% %*

distribution/bin/runserver.sh

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,30 @@ choose_gc_log_directory()
6262
esac
6363
}
6464

65-
choose_gc_options()
66-
{
67-
# Example of JAVA_MAJOR_VERSION value : '1', '9', '10', '11', ...
68-
# '1' means releases befor Java 9
69-
JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')
70-
if [[ "$JAVA_MAJOR_VERSION" -lt "9" ]] ; then
71-
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
72-
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails"
73-
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
74-
else
75-
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
76-
JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M"
77-
fi
78-
}
65+
version=$($JAVA -version 2>&1 | awk -F '"' '/version/ {print $2}')
66+
version=${version%.*.*}
67+
if [[ "$version" -ge 9 ]]; then
68+
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
69+
JAVA_OPT="${JAVA_OPT} -XX:SurvivorRatio=8"
70+
JAVA_OPT="${JAVA_OPT} -Xlog:gc*=info,safepoint=debug:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:utctime,level,tags:filecount=5,filesize=30M"
71+
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
72+
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
73+
JAVA_OPT="${JAVA_OPT} --class-path=${JAVA_HOME}/jre/lib/ext/*:${BASE_DIR}/lib/*:${CLASSPATH}"
74+
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
75+
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
76+
else
77+
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
78+
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
79+
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails"
80+
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
81+
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
82+
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
83+
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
84+
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
85+
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
86+
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
87+
fi
7988

80-
choose_gc_log_directory
8189

82-
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
83-
choose_gc_options
84-
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
85-
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
86-
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:${JAVA_HOME}/lib/ext"
87-
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
88-
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
89-
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
9090

9191
$JAVA ${JAVA_OPT} $@

distribution/bin/tools.cmd

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,22 @@ for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd
2525

2626
set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%
2727

28+
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do @set "JAVA_VERSION=%%j"
29+
if %JAVA_VERSION% EQU 1 goto java8-
30+
goto java9+
31+
2832
rem ===========================================================================================
2933
rem JVM Configuration
3034
rem ===========================================================================================
35+
36+
:java8-
3137
set "JAVA_OPT=%JAVA_OPT% -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
3238
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs="%BASE_DIR%\lib";"%JAVA_HOME%\jre\lib\ext";"%JAVA_HOME%\lib\ext""
3339
set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""
40+
goto end
41+
:java9+
42+
set "JAVA_OPT=%JAVA_OPT% --add-exports java.base/jdk.internal.ref=ALL-UNNAMED -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
43+
set "JAVA_OPT=%JAVA_OPT% --class-path="%CLASSPATH%";"%BASE_DIR%\lib\*";"%JAVA_HOME%\jre\lib\ext";"%JAVA_HOME%\lib\ext""
44+
:end
3445

35-
"%JAVA%" %JAVA_OPT% %*
46+
"%JAVA%" %JAVA_OPT% -version

distribution/bin/tools.sh

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,17 @@ export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
3636
#===========================================================================================
3737
# JVM Configuration
3838
#===========================================================================================
39-
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
40-
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
41-
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
39+
40+
version=$($JAVA -version 2>&1 | awk -F '"' '/version/ {print $2}')
41+
version=${version%.*.*}
42+
43+
if [[ "$version" -ge 9 ]]; then
44+
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
45+
JAVA_OPT="${JAVA_OPT} --class-path=${JAVA_HOME}/jre/lib/ext/*:${BASE_DIR}/lib/*:${CLASSPATH}"
46+
else
47+
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
48+
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
49+
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
50+
fi
4251

4352
$JAVA ${JAVA_OPT} "$@"

0 commit comments

Comments
 (0)