AggressiveOpts UseStringDeduplication 加快编译与字符串去重

AggressiveOpts UseStringDeduplication 加快编译与字符串去重-XX:+AggressiveOpts-XX:+UseStringDeduplication加快编译字符串去重-XX:StringDeduplicationAgeThreshold默认情况下,一个字符串对象经过3次GC以后还存活才会被列为去重的候选对象,可以用-XX:StringDeduplicationAgeThreshold来改变经历的GC的次数-XX:+UseStringDeduplication并不会消除重复字符串的引用本身,它只会替换底层的char[],消除重复字符串…

-XX:+AggressiveOpts -XX:+UseStringDeduplication  加快编译   字符串去重

 

-XX:StringDeduplicationAgeThreshold

默认情况下,一个字符串对象经过3次GC以后还存活才会被列为去重的候选对象,可以用-XX:StringDeduplicationAgeThreshold来改变经历的GC的次数

-XX:+UseStringDeduplication并不会消除重复字符串的引用本身,它只会替换底层的char[],消除重复字符串对象只需要对value字段进行重新引用赋值即可, 差不多就是这个意思:aString.value = anotherString.value。

任何一个String对象在内存中最少占用24个字节,启用这个参数以后如果有很多短的重复字符串对象的话会大大的节省内存。

(7)-XX:+PrintStringDeduplicationStatistics查看去重信息

如果你想查看字符串去重的一些统计信息,比如说去重花了多长时间、多少重复字符串被去重、节省了多少内存等等,可以传递-XX:+PrintStringDeduplicationStatistics这个参数给JVM,在GC日志中就可以打印出这些信息来。

结论

如果你的应用使用的是G1收集器,并且JDK的版本大于 JDK 8 update 20,那么可以尝试开启-XX:+UseStringDeduplication,如果你的应用中存在大量长时间存活的对象,那结果肯定是很香。但是,如果想用在生产环境中还是需要测试一下才可以。

 

亲缘性线程池   内部实现   根据key绑定单线程的线程池  底层实现则是多个单线程池组成的 大线程池   应用场景: 线程池无序 但是希望以某一个维度有序  比如  一组数据希望同一个userid下的数据 顺序执行。

今天的文章AggressiveOpts UseStringDeduplication 加快编译与字符串去重分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13216.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注