范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java性能调优代码篇String内存优化

  作者 | 浩说编程
  来源 | 公众号:浩说编程
  [ 大厂技术资源 | 研发必备安装包 | 限时免费获取 ]
  String在日常开发中的使用频率应该不需要我过多形容,大家闭着眼睛都能手写出来,但也正因如此,对于String的性能优化最容易被忽视却也最为必要!
  如何优化String的内存开支?
  怎样用更少的空间管理String?
  让我们带着这几个问题开始本篇的探讨。一、String自身的"优化"设计思想"String 和 StringBuffer 有什么区别?"
  "StringBuffer可变,String不可变。"
  "String为什么不可变?"
  "额…"
  这是一段面试的真实案例,面试者直接被pass掉,这也反映了一个普遍的问题:"知其然而不知其所以然",希望大家引以为鉴,下面就来探讨一下"String为什么不可变?"
  先从一个例子开始:String str_1 = "abc"; String str_2 = "abc"; System.out.print(str_1==str_2);//true 123
  相信大家都知道答案,重点来拆解一下每一步的底层逻辑:
  1、String str_1 = "abc";
  首先,在常量池中查询"abc"是否已存在:
  发现不存在,于是将"abc"初始化到常量池中,str_1引用该内容:
  2、String str_2 = "abc";
  再次创建相同字符串"abc",同样在常量池中查询"abc"是否已存在
  判断已经存在,于是不再重复创建内容,使用相同的引用:
  于是得出答案true。
  那么试想一下,如果String可变的话,这种常量池存放字符串,内容相同则不再开辟空间而是指向同一引用的设计思想是否还可行?
  是不是即便创建了相同的字符串也要重新分配内存,造成不必要的内存损耗。这就是String自身的"优化"设计思想。
  码文不易
  你的关注是浩说编程持续更新的动力
  浩说编程会做的更好
  二、Stirng.intern:从20G到百兆内存消耗
  该优化方法分享自全球知名社交平台推特(Twitter)的一名工程师,使用这种方法成功帮助他将String的内存消耗从20G降到几百兆。
  我们通过代码来看一下intern方法做了什么:String a = new String("abc").intern(); String b = new String("abc").intern(); if(a==b) {     System.out.print("a==b"); } 12345
  创建 a 变量时,调用 new Sting() 会在堆内存中创建一个 String 对象,String 对象中的 char 数组将会引用常量池中字符串。在调用 intern 方法之后,会去常量池中查找是否有等于该字符串对象的引用,有就返回引用。
  创建 b 变量时,调用 new Sting() 会在堆内存中创建一个 String 对象,String 对象中的 char 数组将会引用常量池中字符串。在调用 intern 方法之后,会去常量池中查找是否有等于该字符串对象的引用,有就返回引用。
  而在堆内存中的两个对象,由于没有引用指向它,将会被垃圾回收。所以 a 和 b 引用的是同一个对象。
  三、纠正字符串拼接误区
  按照正常的理解,由于String不可变,那么每次运算操作都应该产生了一个新的对象,事实真的如此吗?String str = "a" + "b" + "c"; 1
  我将上面代码编译成的class文件通过反编译之后的结果:String str = "abc"; 1
  所以事实是:在拼接String常量的时候,编译器对代码进行了优化,将字符串合并了。
  我们再试一下拼接变量的效果:String b = "b"; String str = "a" + b + "c"; 12
  编译之后:String b = "b"; String str = (new StringBuilder()).append("a").append(b).append("c"); 12
  虽然编译器对String进行了优化,不过还是建议显示的使用StringBuffer或StringBuilder。
  四、字符串分割的最优解
  对于字符串的分割,我在上一篇讲到过split()方法中正则表达式的回溯引起的效率问题,所以建议采用indexOf()方法作字符串分割。
  作者 | 浩说编程
  来源 | 公众号:浩说编程

网约车平台都是一丘之貉来说下在成都跑美团的感受。美团打车下面有很多车公司,比如约尚,网路,大象等等等等。首先美团打车使用的腾讯导航,几乎是十单有九单都会扯拐。乘客就在旁边,导航非要让你绕一圈回来接或者就广东省首个面向行业应用的5G商城上线中新网广州5月19日电(郭军黎颖欣)广东省首个面向行业应用的5G线上商城近日在广东移动和商务平台上线,正式对外运营,这标志着5G运营开启了全新模式。记者19日从广东移动获悉,广东移4个月进账1446亿,华为芯片接班人,反超高通拿下4项全球第一虽然受外部影响,华为芯片倒下了,但华为事件却为中国企业敲响警钟,越来越多的企业投身芯片研发中,未来必然会有千千万万个华为站起来。而联发科,无疑是最有可能成为华为芯片接班人的中国企业全球顶尖科技巨头频频联手广汽埃安,背后有何深意?近年来,新能源汽车产业发展速度迅猛,在新四化的动力驱使下,企业之间的跨界联合屡见不鲜。比如,5月17日,滴滴旗下自动驾驶公司就宣布与广汽埃安达成战略合作。值得留意的是,仅半年多的时66W快充加持荣耀Play5发布2099元起来源快科技18日晚上730,荣耀Play5正式发布。售价方面,8128GB售价2099元8256GB售价2299元。核心配置上,荣耀Play5采用6。53英寸24001080OLE荣耀50惊艳亮相首发高通SM7325,主打性价比路线在友商相继推出新品时,荣耀手机终于坐不住了。刚刚,有网友曝光了荣耀手机即将发布的新旗舰荣耀50。究竟荣耀50能否在竞争如此激烈的手机行业中脱颖而出呢?下面我们一起深入地来分析分析。提升4?被华为卖掉后,荣耀过得很惬意本文原创,请勿抄袭和搬运,违者必究荣耀市场地位迅速回升荣耀被华为卖掉后,很多人都在关心荣耀未来的出路。没有了华为的庇护之后,荣耀还能在市场上走下去吗?相信这也是很多人心中的疑问,但再见吧,QQ等级!曾被视为地位象征,如今为何成了鸡肋?文聪明小生校对李蓉婳原创内容,请勿搬运抄袭,违者必究随着互联网的高速发展,网络社交已经成为我们生活中的一部分。毋庸置疑,在熟人社交这个领域,腾讯是当之无愧的霸主,后来市面上也陆续涌最新消息诺基亚手机复活,而有黑客卷钱逃走诺基亚复活翻盖功能机前后双屏称其智能功能手机HMDGlobal公司在美国发布了采用Verizon4G网络的新款智能手机诺基亚2720VFlip。顾名思义,这款手机采用翻盖设计。该公联想拯救者电竞手机2Pro放大招18GB内存堪比PC,售价5999元虽然现在市场上的游戏手机新品有不少,但要论堆料最猛的那个,还得说联想拯救者电竞手机Pro。这款手机最大的特点就是很多功能配置都是双份的,比如双USBtypeC接口双震动马达等等,连4月新能源销量超燃油,比亚迪要重回一线,混动是制胜关键4月汽车销量已经出炉,比亚迪虽然总量不如长安吉利长安奇瑞这些友商,但有一点值得注意,就是比亚迪不仅总销量大幅增长,而且新能源车销量已经超过了传统燃油车,这在传统车企算是独一份了。数
中端镜头玩出花?高通手机相机得分出炉,持平小米10UltraDxO在近日公布了高通手机的相机得分,这款机器获得了133的好成绩,持平小米去年的旗舰手机小米10Ultra值得一提的是,高通手机仅仅采用了一颗去年中端智能手机上常见的6400万像手机影像领头羊!OPPO印度建立相机创新实验室,加强拍摄算法研究日前,据印度经济时报报道,中国手机厂商OPPO已于海德拉巴(Hyderabad)研发中心正式建立了相机创新实验室,用于开发使用人工智能(AI)的本地化功能和相机解决方案,并且专注于中兴真会玩,买手机送小米8月16日小米MIX4正式发售,结果是首批货瞬间就被抢光,很多平台出现一机难求的现象。面对这种情况另外一个正式商的屏幕下摄像头机型坐不住了,它就是中兴Axon30屏下版。当小米MI399元起!诺基亚两款手机支持支付宝了今日,诺基亚手机宣布,诺基亚63004G和诺基亚80004G已支持支付宝扫码支付功能,系统更新后就能使用。此前这两款手机就已经支持通过付款二维码向商家付款,此次升级后则是首次支持主100天打造爆款小程序十荟团支付宝小程序的三板斧上线第一天,0上线第60天,日单量连续几日冲破100万。上线90天,最高日单量超过了200万。上线100天,最高日单量远远超过300万。七夕那天,支付宝凉爽红包节因为参加的消费者太小米12渲染图超曲2K屏双1亿主摄骁龙895,米粉的等待也许值了今年小米11系列共有三款旗舰机型,分别是小米11小米11Pro以及小米11UItra,三款手机不同价位,对于米粉而言选择性比往年多了不少,不过仍然有米粉对今年的小米11系列不是很满搭载M1芯片的iPadPro上手体验如何?值得购买吗?0。入手开箱入手版本11寸128G版本,深空灰色。入手时间首发当天购入,5月22号到货。入手理由苹果春季发布会没发布mini6,想换一部全面屏的iPad。入手用途iPadminip使用XilisoftiPadMagicPlatinum从向iPadiPodiPhone传输文件?XilisoftiPadMagicPlatinumforMac旨在传输,备份,管理iPadiPhone中的音乐,电影,照片,联系人,短信,应用程序,书籍等。它可以将文件从iPad传什么是NAS?NAS的主要功用有哪些?NAS(网络附属存储)是一个数据存储设备,用户可以用来保存照片视频音乐和文档。NAS用户可以仅由自己使用,可以与家庭朋友或同事之间的大型团体共享。也可以从移动设备和计算机访问NAS音质悦耳续航无忧,图拉斯真无线蓝牙耳机评测在有线耳机和无线耳机面前,相信大部分人都会毫不犹豫地pick无线耳机,因为它既能保障高品质音质,还能摆脱冗长线的限制。再也不用天天各种浪费时间去解缠绕在一起的线,户外运动的时候也不荣耀平板V7Pro正式发布迅鲲1300T强悍加持,性能续航无短板如果你还在为选择一款轻巧便携的生产力工具而烦恼,那么前不久最新发布的荣耀平板V7Pro会是一个很好的选择。8月12日,荣耀面向高端商务办公人群推出了全新荣耀平板V7Pro,首发联发