详解JVM 中的StringTable
是什么字符串常量池是 JVM中的一个重要结构,用于存储JVM运行时产生的字符串。这使得很多字符串的操作在 JDK7中和在之前的版本中执行是不同的结果。字符串常量池:底层使用 HashTable来存储字符串,在 JDK6 HashTable的数组长度是1006,JDK7开始变成了 60013,这是为了避免存储字符串过多导致链表长度过长从而查询效率降低。常见问题字符串相加1、对于字符串常量相加,编译器会优化成直接相加。对象创建数量对象,包括 new的对象以及字符串对象。严格来看,创建了六个对象。先说结论:JDK7之前: false、false。然后判断,s指向的是堆中的对象,而 s2指向的是常量池中的字符串常量,所以无论是 JDK7还是之前的都是 false。
用户评论