-
Notifications
You must be signed in to change notification settings - Fork 58
/
java-default-options
106 lines (93 loc) · 3.18 KB
/
java-default-options
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/bin/sh
# =================================================================
# Detect whether running in a container and set appropriate options
# for limiting Java VM resources
#
# Usage: JAVA_OPTS="$(java-default-options.sh)"
# stubs for jvm specific overrides
jvm_specific_options() {
:
}
jvm_specific_diagnostics() {
:
}
# Include overridden jvm_specific_*() functions
if [ -f "${JBOSS_CONTAINER_OPENJDK_JDK_MODULE}/jvm-options" ]; then
source "${JBOSS_CONTAINER_OPENJDK_JDK_MODULE}/jvm-options"
fi
# Check for memory options and calculate a sane default if not given
max_memory() {
case "$JAVA_MAX_MEM_RATIO" in
"0") # explicitly disabled
return
;;
"")
maxmem="80.0"
;;
*)
maxmem="$(printf "%.0f.0" "$JAVA_MAX_MEM_RATIO")"
;;
esac
echo "-XX:MaxRAMPercentage=$maxmem"
}
# Check for memory options and calculate a sane default if not given
initial_memory() {
# JAVA_MAX_INITIAL_MEM is deprecated and will be removed in a future release
if [ -n "$JAVA_MAX_INITIAL_MEM" ]; then
echo "-Xms$JAVA_MAX_INITIAL_MEM"
else
# there's no point setting this if we are passing -Xms, since -Xms
# overrides this
# JAVA_INITIAL_MEM_RATIO is deprecated and will be removed in a
# future release
if [ -n "$JAVA_INITIAL_MEM_RATIO" ]; then
initmem="$(printf "%.0f.0" "$JAVA_INITIAL_MEM_RATIO")"
echo "-XX:InitialRAMPercentage=${initmem}"
fi
fi
}
# Switch on diagnostics except when switched off
diagnostics() {
if [ "x$JAVA_DIAGNOSTICS" != "x" ]; then
echo "$(jvm_specific_diagnostics)"
fi
}
gc_config() {
local minHeapFreeRatio=${GC_MIN_HEAP_FREE_RATIO:-10}
local maxHeapFreeRatio=${GC_MAX_HEAP_FREE_RATIO:-20}
local timeRatio=${GC_TIME_RATIO:-4}
local adaptiveSizePolicyWeight=${GC_ADAPTIVE_SIZE_POLICY_WEIGHT:-90}
local gcOptions="${GC_CONTAINER_OPTIONS:--XX:+UseParallelGC}"
# for compat reasons we don't set a default value for metaspaceSize
local metaspaceSize
# We also don't set a default value for maxMetaspaceSize
local maxMetaspaceSize=${GC_MAX_METASPACE_SIZE}
if [ -n "${GC_METASPACE_SIZE}" ]; then
metaspaceSize=${GC_METASPACE_SIZE}
if [ -n "${maxMetaspaceSize}" ]; then
# clamp the max size of metaspaceSize to be <= maxMetaspaceSize
if [ "${metaspaceSize}" -gt "${maxMetaspaceSize}" ]; then
metaspaceSize=${maxMetaspaceSize}
fi
fi
fi
local allOptions="$(jvm_specific_options) "
allOptions+="${gcOptions} "
allOptions+="-XX:MinHeapFreeRatio=${minHeapFreeRatio} "
allOptions+="-XX:MaxHeapFreeRatio=${maxHeapFreeRatio} "
allOptions+="-XX:GCTimeRatio=${timeRatio} "
allOptions+="-XX:AdaptiveSizePolicyWeight=${adaptiveSizePolicyWeight} "
# if no value was specified for maxMetaSpaceSize we should skip passing it entirely
if [ -n "${maxMetaspaceSize}" ]; then
allOptions+="-XX:MaxMetaspaceSize=${maxMetaspaceSize}m "
fi
if [ -n "${metaspaceSize}" ]; then
allOptions+="-XX:MetaspaceSize=${metaspaceSize}m "
fi
echo "${allOptions}"
}
error_handling() {
echo "-XX:+ExitOnOutOfMemoryError"
}
## Echo options, trimming trailing and multiple spaces
echo "$(initial_memory) $(max_memory) $(gc_config) $(diagnostics) $(error_handling)" | awk '$1=$1'