码迷,mamicode.com
首页 > 其他好文 > 详细

陕西柴油机--机械ip--------》QQ请求汇创

时间:2018-10-05 12:26:04      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:通过   就是   ret   ring   字符串   ges   冗余   pre   内存占用   

我们发现 String.substring()所返回的 String 仍然会保存原始 String,其实substring中生成的字符串与原字符串共享内容数组是一个很棒的设计,这样避免了每次进行substring重新进行字符数组复制。这种设计在很多时候可以很大程度的节省内存,因为这些 String 都复用了原始 String,只是通过 int 类型的 start, end 等值来标识每一个 String。而对于上面的案例,从一个巨大的 String 截取少数 String 为以后所用,这样的设计则造成大量冗余数据。

既然导致大量内存占用的根源是 String.substring()返回结果中包含大量原始 String,那么一个显而易见的减少内存浪费的的途径就是去除这些原始 String。办法有很多种,在此我们采取比较直观的一种,即再次调用 new String构造一个的仅包含截取出的字符串的 String

String newString = new String(largeString.substring(0,2));
  • 1

Java 7 实现

在Java 7 中substring的实现抛弃了之前的内容字符数组共享的机制,对于子字符串(自身除外)采用了数组复制实现单个字符串持有自己的应该拥有的内容。

--------------------- 本文来自 麦田 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/itmyhome1990/article/details/77647800?utm_source=copy 

陕西柴油机--机械ip--------》QQ请求汇创

标签:通过   就是   ret   ring   字符串   ges   冗余   pre   内存占用   

原文地址:https://www.cnblogs.com/paper-file/p/9744268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!