在Java8Update 20中实现的http://openjdk.java.net/jeps/192增加了新的字符串去重复功能:
通过增强G1垃圾收集器来减少Java堆活动数据集,这样重复的字符串实例就会自动和持续地去重复。
JEP页面提到,命令行选项UseStringDeduplication (bool)允许启用或禁用“增强功能”。但是JEP页面并没有显示缺省值。
默认情况下,G1垃圾收集器中的➠是与Java8和Java9捆绑在一起的,是打开还是关闭的?
➠有在运行时验证当前设置的“getter”方法吗?
我不知道在JEP页面之外在哪里查找文档。
至少在Java9的https://en.wikipedia.org/wiki/HotSpot-equipped实现中,G1垃圾收集器是默认启用。这一事实现在引发了这个问题。有关字符串实习生和去重复的更多信息,请参见29:00的2014-10年度由Aleksey Shipilev介绍。
发布于 2017-10-03 05:49:59
虽然吉加尔精确地提供了了解JVM标志和统计数据的方法,但是仍然可以链接到一些解决这部分问题的有用文档:
我不知道在JEP页面之外在哪里查找文档.
在JDK 9中,当没有显式指定垃圾收集器时,默认的垃圾收集器是G1。
启用字符串去重复。默认情况下,此选项已禁用。若要使用此选项,必须启用垃圾优先(G1)垃圾收集器。 通过利用许多字符串对象是相同的这一事实,字符串去重复减少了Java堆上字符串对象的内存占用。与指向其自己的字符数组的每个字符串对象不同,相同的字符串对象可以指向并共享相同的字符数组。
也在此讨论公开问题,如果
Java 9没有打印字符串去复制统计信息的选项.
使用-Xlog中的http://openjdk.java.net/jeps/158实现,垃圾收集器标志被标记为遗留标记,而跟踪垃圾收集器标志的替代方式是使用Java9特性。这里列出了用于将GC日志标记转换为Xlog的替换的详细列表。其中一项建议
PrintStringDeduplicationStatistics => -Xlog:stringdedup*=debughttps://stackoverflow.com/questions/46537415
复制相似问题