字符串常量池 - StringTable
一:配置常量池大小
-XX:StringTableSize=60013
-
JDK1.6默认为1009,JDK1.7之后默认为60013,字符串常量池底层为HashTable,合理增大常量池大小会解决Hash冲突问题
-
JDK1.8开始1009是可以设置的最小值
二:测试(常量池大小对执行效率的影响)
package xyz.xx.chapter_string;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* -XX:StringTableSize=1009 -> 141ms
* -XX:StringTableSize=100009 -> 43ms
*/
public class StringTest3 {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"), "UTF-8"));
long start = System.currentTimeMillis();
String data;
while ((data = br.readLine()) != null) {
data.intern();
}
long