String字符串性能优化的几种方案(16)
日志分析:没有使用intern情况下 , 执行时间为1515ms , 占用内存为16694k;
综上所述:使用intern情况下 , 内存相对没有使用intern的情况要小 , 但在节省内存的同时 , 增加了时间复杂度 。 我试过将MAX=10000000再增加一个0的情况下 , 使用intern将会花费高达11秒的执行时间 , 可见 , 在遍历数据过大时 , 不建议使用intern 。
因此 , 使用intern的前提 , 一定要考虑到具体的使用场景 。
到这里 , 可以确定 , 使用String.intern确实可以节省内存 。
接下来 , 分析一下intern在不同JDK版本的区别 。
在JDK1.6中 , 字符串常量池在方法区中 , 方法区属于永久代 。
在JDK1.7中 , 字符串常量池移到了堆中 。
在JDK1.8中 , 字符串常量池移到了元空间里 , 与堆相独立 。
分别在1.6、1.7、1.8版本执行以下一个例子:
推荐阅读
- 永劫无间|《永劫无间》新英雄\岳山\在测试服推出,游戏性能进一步提升
- 游戏本|畅玩喋血复仇不花大价钱,双十一天选迎好价,6K入手高性能游戏本
- iqoo|KPL选手同款手游利器!双11别错过iQOO性能旗舰
- 森林之子|双十一性价比风暴来袭,这些性能强劲的笔记本不容错过
- fps|《古墓丽影:暗影》移除D加密,性能提升显著
- 王者荣耀|游戏性能数据简报〡iPhone 13
- |原神云游戏公测,再也不用担心手机性能,还能白嫖一个月?
- 仙剑奇侠传七|英伟达公布最新支持DLSS游戏:《仙剑7》性能表现强势
- ag战队|手机性能是否过剩,本身就是个伪命题,毕竟最终解释权归用户所有
- |我现在是明白了,A15性能再强没啥用