1.String在虚拟机中的实现

特点:

① 不变性,是在多线程的访问中,保持对象的不变性的话就不需要实现同步,省略了同步和锁的等待时间。提高了多线程的访问性能,堆所有想成都是只读的。它的修改操作都是创建新的对象来实现的。

② 针对常量池的优化,是指两个String对象拥有相同的值时,他们只引用常量池中的同一个拷贝。当同一个字符串反复出现时,这个技术可以大幅度节省内存空间。

③ 类的final定义,final类型的对象在系统中不可能有任何子类,这对系统的安全性保护,

String的内存泄漏:

String的内存泄漏在JDK1.7之前,其中的一个SubString()函数在截取字符串时,是直接调整偏离值off和长度count,通过直接对原来Value的引用实现新的字符串。但是当垃圾回收器对原有数据进行回收后,除了被引用的字符外其他字符依然占用内存而没有被清理,造成了内存泄漏。解决办法是通过在JDK1.7中对字符串中的长度进行value的实际length进行计算,并且在SUB新的字符串时,直接创建一个新的字符串而不是使用引用。

String常量池的位置变化:

JDK1.6中还是在永久区,在JDK1.7中就在堆空间中了。

最新文章

  1. 【转】TensorFlow练习20: 使用深度学习破解字符验证码
  2. js按键监听
  3. World of Warcraft
  4. 中国各城市PM2.5数据间的相关分析
  5. ASP.NET MVC 4 让数据库自动迁移
  6. WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)
  7. Java反射-简单应用
  8. SQL基础学习_04_视图
  9. for/range/break/continue
  10. 小程序之 微信小程序下拉上方出现空白
  11. Spring常用注解总结(2)
  12. SharePoint 读取内容的插件之SharepointPlus
  13. cocos2d-x JS 定时器暂停方法
  14. GitHub入门与实践 读书笔记二:Git的导入
  15. Filebeat的Registry文件解读
  16. java监控工具VisualVM
  17. 【转发】centos 7开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
  18. Windows Service application 初步探索
  19. Codeforces 1006 F - Xor-Paths
  20. PAT 乙级 1031 查验身份证(15) C++版

热门文章

  1. elementUI表单验证
  2. sql将查询结果的某个字段赋值给另一个字段
  3. py map reduce filter 总结
  4. Android笔记(十三) Android中的基本组件——文本
  5. 分布式session的几种实现方式
  6. Anaconda基础使用
  7. HTML&CSS基础-ps的基本操作
  8. Java springboot 中上传图片文件的1Md的限制
  9. MySQL进阶15--TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读
  10. 1127 模型层orm表操作