$ cat /etc/systemd/system/user-cg.slice [Unit] Description=Demo cgroup Before=slices.target [Slice] MemoryAccounting=true MemoryLimit=10M $ uname -a Linux p50-laptop 4.19.14-200.fc28.x86_64 #1 SMP Wed Jan 9 21:30:31 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux $ sudo systemctl daemon-reload && sudo systemctl restart user-cg.slice && sudo systemd-run --slice user-cg.slice --scope bash [root]# ./build/linux-x86_64-server-fastdebug/images/jdk/bin/java -Xlog:os+container=info -version [0.001s][info][os,container] Memory Limit is: 10485760 openjdk version "13-internal" 2019-09-17 OpenJDK Runtime Environment (fastdebug build 13-internal+0-adhoc.sgehwolf.openjdk-head) OpenJDK 64-Bit Server VM (fastdebug build 13-internal+0-adhoc.sgehwolf.openjdk-head, mixed mode, sharing) [root]# ./build/linux-x86_64-server-fastdebug/images/jdk/bin/java MemoryLeak Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.base/java.util.HashMap.resize(HashMap.java:699) at java.base/java.util.HashMap.putVal(HashMap.java:658) at java.base/java.util.HashMap.put(HashMap.java:607) at MemoryLeak.main(MemoryLeak.java:16) [root]# cat MemoryLeak.java import java.util.Map; import java.util.HashMap; public class MemoryLeak { private static final Map leak = new HashMap(); private static final int MB = 1024 * 1024; public static void main(String[] args) { int bound = 10 * MB; for (int i = 0; i < bound; i++) { Byte[] payload = new Byte[10]; for (int j = 1; j <= 10; j++) { payload[j-1] = new Byte((byte)j); } String key = "key_" + i; leak.put(key, payload); } } }