String的substring()方法内部是如何实现的?
2016-02-16 14:08
246 查看
又一个Java面试的好问题,你应该答出“substring方法通过原字符串创建了一个新的对象”,否则你的回答肯定是不能令人满意的。这个问题也经常被拿来测试应聘者对于substring()可能带来的内存泄漏风险是否有所了解。直到Java 1.7版本之前,substring会保存一份原字符串的字符数组的引用,这意味着,如果你从1GB大小的字符串里截取了5个字符,而这5个字符也会阻止那1GB内存被回收,因为这个引用是强引用。
到了Java 1.7,这个问题被解决了,原字符串的字符数组已经不再被引用,但是这个改变也使得substring()创建字符串的操作更加耗时,以前的开销是O(1),现在最坏情况是O(n)。
到了Java 1.7,这个问题被解决了,原字符串的字符数组已经不再被引用,但是这个改变也使得substring()创建字符串的操作更加耗时,以前的开销是O(1),现在最坏情况是O(n)。
相关文章推荐
- Jmeter压力测试自动化
- ignoring file ***missing required architecture armv7in file **** ignoring file ***missing required
- 史上最简单Robotium跨进程操作实践——基于ADB框架
- 安全测试之整数溢出的一个实例
- try catch finally 正确使用方法
- 1809两倍(2.1)
- linux上配置spark集群
- fuel7.0 openstack webui 默认密码查看
- [原创破解] Charles.Proxy.v3.11b4.x32/x64.Cracked.by.yoza[CCG/UpK]
- c语言入门之项目1.4——指针变量2
- 宿主机-开发板设置NFS共享目录(2)
- 30岁的出路
- 贴吧吧主诋毁淘宝店赔偿2000元
- 百度员工离职总结:资质平庸的人该怎么办?震惊了无数人!
- 调用系统相机写入DCIMPath
- 通往全栈工程师的捷径 —— react
- 对于一个不可修改的类,它的每个对象是不是都必须声明成final的?
- Android实现在webview中长按图片弹出菜单保存图片
- Linux命令学习之nslookup
- SQL常用命令