JVM参数:-XX:StringTableSize
来源:互联网 发布:linux 守护进程 服务器 编辑:程序博客网 时间:2024/06/05 10:15
通过笨神的分享整理笔记:
常量池底层使用StringTable数据结构保存字符串引用,实现和HashMap类似,根据字符串的hashcode定位到对应的数组,遍历链表查找字符串,当字符串比较多时,会降低查询效率。
-XX:StringTableSize
在我们调用String.intern的时候会往hashtable里插入一项,这个table就是stringtable
使用最多的场景是序列化反序列化场景,为了避免同一个字符串被多次创建,保证每次通过string的intern返回的是同一个字符对象。
这个参数就是现在这个表的size。
如果这样参数很小,带来的问题很明显,就是hash碰撞,这样在查找字符串过程中可能会比较耗cpu
不过jdk6某个版本开始已经有了rehash的逻辑了
当冲突次数超过100次就会自动做rehash,但是表如果size小的话,那再怎么rehash也是冲突,只能换来的是不断做rehash,因此性能会比较差。
所以建议大家将这个参数设置成一个比较大的质数,减少冲突
症状的关键表现是:
通过perf才能看到 如果能看到stringtable的lookup方法占cpu很高 就是这个问题
阅读全文
0 0
- JVM参数:-XX:StringTableSize
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM参数:-XX:ReservedCodeCacheSize
- JVM参数:-XX:CompileCommand
- JVM -XX: 参数介绍
- JVM -XX: 参数介绍
- JVM -XX:NewRatio、-XX:SurvivorRatio参数含义
- JVM -XX:NewRatio、-XX:SurvivorRatio参数含义
- linux下JVM参数-XX:+HeapDumpOnOutOfMemoryError 设置
- jvm 打印所有XX参数及值
- JVM GC的核心参数: -XX:Newratio -XX:Newsize -XX:Maxnewsize -XX:Surviorratio
- 安装windows和Ubuntu双系统
- 反转链表
- 剑指offer——栈的压入、弹出序列
- java中连续输入错误(效仿银行卡输入错误三次就终止)
- A*算法详解
- JVM参数:-XX:StringTableSize
- VERIFY DATABASE 正在异常终止。 (Microsoft SQL Server,错误: 3169)
- POJ1753 Flip Game
- An Exploration of ARM TrustZone Technology
- HDU 1512 Monkey King [可并堆]
- Leetcode 556. Next Greater Element III
- 动归-----编辑距离
- 朴素贝叶斯算法原理小结
- 前、中、后缀表达式和前、中、后序遍历