60 lines
3.0 KiB
Bash
60 lines
3.0 KiB
Bash
#!/bin/bash
|
|
JAVA_OPTS="${JAVA_OPTS} -server"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+AlwaysPreTouch -XX:+PrintFlagsFinal -XX:-DisplayVMOutput -XX:-OmitStackTraceInFastThrow"
|
|
JAVA_OPTS="${JAVA_OPTS} -Xms${XMS:-1G} -Xmx${XMX:-1G} -Xss${XSS:-256K}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:MetaspaceSize=${METASPACE_SIZE:-128M} -XX:MaxMetaspaceSize=${MAX_METASPACE_SIZE:-256M}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:MaxGCPauseMillis=${MAX_GC_PAUSE_MILLIS:-200}"
|
|
|
|
if [[ "${GC_MODE}" == "ShenandoahGC" ]]; then
|
|
echo "GC mode is ShenandoahGC"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseShenandoahGC"
|
|
elif [[ "${GC_MODE}" == "ZGC" ]]; then
|
|
echo "GC mode is ZGC"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseZGC"
|
|
elif [[ "${GC_MODE}" == "G1" ]]; then
|
|
echo "GC mode is G1"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:InitiatingHeapOccupancyPercent=${INITIATING_HEAP_OCCUPANCY_PERCENT:-45}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:G1ReservePercent=${G1_RESERVE_PERCENT:-10} -XX:G1HeapWastePercent=${G1_HEAP_WASTE_PERCENT:-5} "
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:G1NewSizePercent=${G1_NEW_SIZE_PERCENT:-50} -XX:G1MaxNewSizePercent=${G1_MAX_NEW_SIZE_PERCENT:-60}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:G1MixedGCCountTarget=${G1_MIXED_GCCOUNT_TARGET:-8}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:G1MixedGCLiveThresholdPercent=${G1_MIXED_GCLIVE_THRESHOLD_PERCENT:-65}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled"
|
|
elif [[ "${GC_MODE}" == "CMS" ]]; then
|
|
echo "GC mode is CMS"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseConcMarkSweepGC -Xmn${XMN:-512m}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:ParallelGCThreads=${PARALLEL_GC_THREADS:-2} -XX:ConcGCThreads=${CONC_GC_THREADS:-1}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=${CMS_INITIATING_HEAP_OCCUPANCY_PERCENT:-92}"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark"
|
|
fi
|
|
|
|
if [[ "${USE_GC_LOG}" == "Y" ]]; then
|
|
echo "GC log path is '${HOME}/logs/jvm_gc.log'."
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+PrintVMOptions"
|
|
JAVA_OPTS="${JAVA_OPTS} -Xlog:gc:file=${HOME}/logs/jvm_gc-%p-%t.log:tags,uptime,time,level:filecount=${GC_LOG_FILE_COUNT:-10},filesize=${GC_LOG_FILE_SIZE:-100M}"
|
|
fi
|
|
|
|
if [ ! -d "${HOME}/logs" ]; then
|
|
mkdir ${HOME}/logs
|
|
fi
|
|
|
|
if [[ "${USE_HEAP_DUMP}" == "Y" ]]; then
|
|
echo "Heap dump path is '${HOME}/logs/jvm_heap_dump.hprof'."
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:HeapDumpPath=${HOME}/logs/jvm_heap_dump.hprof -XX:+HeapDumpOnOutOfMemoryError"
|
|
fi
|
|
|
|
if [[ "${USE_LARGE_PAGES}" == "Y" ]]; then
|
|
echo "Use large pages."
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseLargePages"
|
|
fi
|
|
|
|
if [[ "${JDWP_DEBUG:-N}" == "Y" ]]; then
|
|
echo "Attach to remote JVM using port ${JDWP_PORT:-5005}."
|
|
JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=${JDWP_PORT:-5005},server=y,suspend=n"
|
|
fi
|
|
|
|
JAVA_OPTS="${JAVA_OPTS} -Dserver.port=${SERVER_PORT} -Dmanagement.server.port=${MANAGEMENT_SERVER_PORT} -Dspring.profiles.active=prod"
|
|
|
|
exec java $JAVA_OPTS -noverify -Djava.security.egd=file:/dev/./urandom "org.springframework.boot.loader.launch.JarLauncher" "$@"
|