聊聊G1 GC的String Deduplication

聊聊G1 GC的String Deduplication

序 本文主要研究一下G1 GC的String Deduplication -XX:+UseStringDeduplication jdk8u20给G1 GC带来了String Deduplication特性来将相同的字符串指向同一份数据,来减少重复字符串的内存开销 该特性默认是关闭的,可以使用-XX:+UseStringDeduplication来开启(前提是使用-XX:+UseG1GC) 具体的实现大致是JVM会记录char[]的weak reference及hash value,当找到一个hash code相同的String时,就会挨个char进行比较,当所有都match,那么其中一个String就会修改指针指向另一个String的char[],这样前者的char[]就可以被回收 实例 实验代码 @Test public void testG1StringDeduplication() throws InterruptedException { List<String> data = IntStream.rangeClosed(1,10000000) .mapToObj(i -> "number is " + ( i % 2 == 0 ? "odd" : "even")) .collect(Collectors.toList()); System.gc(); long bytes = RamUsageEstimator.sizeOfAll(data); System.out.println("string list size in MB:" + bytes*1.0/1024/1024); System.out.println("used heap size in MB:" + ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed()*1.0/1024/1024); System.out.println("used non heap size in MB:" + ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage().getUsed()*1.0/1024/1024); } 关闭StringDeduplication -XX:+UseG1GC -XX:-UseStringDeduplication 输出如下: string list size in MB:586.8727111816406 used heap size in MB:831.772346496582 used non heap size in MB:6.448394775390625 整个jvm heap占用了约831MB,其中string list占用了约586MB 开启StringDeduplication -XX:+UseG1GC -XX:+UseStringDeduplication 输出如下: string list size in MB:296.83294677734375 used heap size in MB:645.0970153808594 used non heap size in MB:6.376350402832031 整个jvm heap占用了约645MB,其中string list占用了约296MB 小结 jdk8u20给G1 GC带来了String Deduplication特性来将相同的字符串指向同一份数据,来减少重复字符串的内存开销 该特性默认是关闭的,可以使用-XX:+UseStringDeduplication来开启(前提是使用-XX:+UseG1GC) 在有大量重复string的前提下,使用G1 GC开启String Deduplication确实能够节省一定的内存,可

老先生蛋黄酥雪媚娘豆沙麻薯酥皮休闲食品网红小吃零食大礼包整箱

老先生蛋黄酥雪媚娘豆沙麻薯酥皮休闲食品网红小吃零食大礼包整箱

老先生蛋黄酥雪媚娘豆沙麻薯酥皮休闲食品网红小吃零食大礼包整箱 【原价】 19.99 【优惠券】10.00 【券后价】9.99 複制整段文字,打开手機淘寶领券购买$s7z0Y7l6DRK$

【好物体验女王节专享】鸿星尔克男童儿童速干衣2023夏季冰感t恤

【好物体验女王节专享】鸿星尔克男童儿童速干衣2023夏季冰感t恤

#淘宝特惠 【好物体验女王节专享】鸿星尔克男童儿童速干衣 【原价】 69.00 【优惠券】30.00 【券后价】39.00 长按复制整段打开手机淘宝领券购买2fu👈質4$KWyzdlu0cbX$:// CZ9527,打開/

2022新版小升初必刷题人教版真题卷英语数学语文专项训练分班卷六年级下册毕业练习与测试复习资料小升初系统总复习试卷衔接教材

2022新版小升初必刷题人教版真题卷英语数学语文专项训练分班卷六年级下册毕业练习与测试复习资料小升初系统总复习试卷衔接教材

#淘宝特惠 2022新版小升初必刷题人教版真题卷英语数学 【原价】 10.80 【优惠券】5.00 【券后价】5.80 长按复制整段打开手机淘宝领券购买8:/👈/OhvH2omv3zQ/

罗马仕iPhone6s苹果数据线 iphone5s/6/7/8 ipad快充手机通用数据线苹果短闪充电线XS 7Plus加长冲电线正品

罗马仕iPhone6s苹果数据线 iphone5s/6/7/8 ipad快充手机通用数据线苹果短闪充电线XS 7Plus加长冲电线正品

罗马仕iPhone6s苹果数据线 iphone5s/6/7/8 ipad快充手机通用数据线苹果短闪充电线XS 7Plus加长冲电线正品 【原价】 4.90 【优惠券】3.00 【券后价】1.90 複制整段文字,打开手機淘寶领券购买$aNQzYqzj2Dw$

联系我们

联系电话

4000-640-466

联系邮箱

service@f-li.cn

办公地址

上海黄浦区外滩源1号

谢谢,您的信息已成功发送。
请填写信息。