java8 设定MaxPermSize=2M 不停String.intern().未发生OOM

问题遇到的现象和发生背景

在测试PermSize OOM是看到一个实例。指定-XX:MaxPerSize=2M 然后执行

public class PermOOM {

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    while (true) {
        list.add(UUID.randomUUID().toString().intern());
    }
}

}

预期出现 :
系统溢出后打印的异常栈:
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
at java.lang.String.intern(Native Method)
at test.classloader.PermOOM.main(PermOOM.java:20)

但是实际并未出现。代码能一直运行下去。
然后添加 运行参数 -XX:+PrintGC
发现一直在GC

问题相关代码,请勿粘贴截图

运行参数:

img

代码:

img

运行结果:

img

运行结果及报错内容

未发生OOM 且在发生GC

我想要达到的结果

发生OOM

我的疑惑

1,为什么没OOM ,是因为java8 用 Metaspace 替换了 perm的原因么?
2,常量池一直在加字符常量,且被List持有。也没有其他对象产生,为什么会发生GC,在GC什么。看内存变化像是这些字符常量被回收了?

已找到答案 :https://blog.csdn.net/FIRE_TRAY/article/details/51287532?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask