With JDK8 it seems to be impacted by whether the machine has multiple nodes (or not):
$ numactl -H
available: 2 nodes (0-1)
node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
node 0 size: 63560 MB
node 0 free: 24246 MB
node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47
node 1 size: 64497 MB
node 1 free: 26020 MB
node distances:
node 0 1
0: 10 21
1: 21 10
$ java -XX:+PrintFlagsFinal -XX:+UseNUMA -version | grep UseNUMA
bool UseNUMA := true {product}
bool UseNUMAInterleaving := true
$ numactl -H
available: 1 nodes (0)
node 0 cpus: 0 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
node 0 size: 64342 MB
node 0 free: 25173 MB
node distances:
node 0
0: 10
$ java -XX:+PrintFlagsFinal -XX:+UseNUMA -version | grep UseNUMA
bool UseNUMA := false {product}
bool UseNUMAInterleaving = false {product}