游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

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

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

华为P50系列只支持4G,能通过软件解开屏蔽支持5G吗?昨天华为正式发布新一代P系列旗舰华为P50和华为P50Pro,强悍的参数背后,让人唏嘘的是新一代的华为旗舰居然不支持5G信号,不管是麒麟9000芯还是高通骁龙888芯,都是4G……lntel为何想300亿美元收购格芯?今天早些时候,有外媒给出消息称,Intel正在研究收购格芯(GlobalFoundries)的交易,此举将推动这家半导体巨头为其他科技公司生产更多芯片的计划,并被视为该公司有史……8月神仙打架小米MIX4荣耀Magic3都来了8月神仙打架小米MIX4荣耀Magic3都来了小米8。10号雷军进行第二次年度个人演讲,同时发布新品。这次知道的新品有小米平板5,小米MIX4。但是好像没有cc11……开发一个货拉拉的小程序,大概需要多少钱?报告显示,2021年,中国长短途搬家行业总值达8900亿元,持续稳中向上发展趋势。货拉拉的火热发展正是得益于繁盛的市场需求。那么,像货拉拉一样的app是否还有发展机会呢?事实上……iphone13真值得排队抢购吗?你会放弃苹果手机,来支持国产品牌吗手机作为重要的的通讯工具,已和人们的日常生活密不可分了。但即使再密不可分,它也只是一个辅助工具而已。所以如何选择手机,还是根据自己的经济实力和……Web3。0投资成功的秘诀?抗通胀,大基建,逆周期2022年1月27日,分布式搜索引擎QitChainCEO与SoftBankChinaJefferyPan开启了一场主题为《Web3。0投资成功的秘诀?抗通胀,大基建,逆周期》……对于史蒂芬霍金的去世,你们想不想说点什么?海内网3月14日电据美国《时代周刊》报道,英国著名物理学家史蒂芬霍金逝世,享年76岁。霍金21岁时患上肌肉萎缩性侧索硬化症(卢伽雷氏症),全身瘫痪,不能言语,手部只要三根……咖啡能提高你的运动能力吗?以下是科学的解释咖啡是一种兴奋剂,这意味着它能提高饮用者的注意力和警觉性。现实生活中,我们中的许多人习惯在早上或工作日喝它来改善我们的精神表现。有趣的是,咖啡因可能也有刺激作用,可以提高人们锻……雷军将于八月十号时候展开小米年度演讲诈尸?锤子升级安卓11科技两分钟爆料我全知,欢迎收看本期子楠科技的子楠资讯。喜欢的话,就点个关注吧。【雷军将于8月10日时候展开小米年度演讲】雷军公布今年的年度演讲重点1。目……艾瑞SVC综艺市场洞察创造营2021核心摘要:腾讯视频国际青年文化交流男团成长综艺《创造营2021》于今年2月重磅上线,节目收视表现行业领先,节目口碑指数惊艳。众品牌在节目中花式植入,与节目联动营销,全链路……为什么很多人扫码付款后要把手机给商家看一眼?扫码付款开始流行的时候,经常容易产生纠纷,我自己就碰到过几次,明明付了钱,可是对方确担心你没有付,当时的确有一些人用这种方式诈骗,手机里留一个付款截图,每次付款都给商家看同一张……哪家手机拍月亮最强?vivo华为iPhone来比一比中秋节当天,你们有欣赏圆月吗?相信很多网友都有欣赏一轮圆月,今天就给大家解析一下,就拍月亮的照片质感来说,到底是哪家手机更强。下图是vivoX70Pro拍摄的月亮照;……
别饿坏了那匹马教学反思人教版六年级上册的《别饿坏了那匹马》一篇略读课文,课文主要写了酷爱读书的我在失去看书机会时,摆书摊的残疾青年谎称家中有马,买下马草,让我继续看书的事。下面是小编收集整理的别饿坏……七年级英语下册期末复习提纲unit1where’syourpenpalfrom?一短语:1befromcomefrom来自于2livein居住在3onweekends在周末……春日山中对雪有作阅读答案《春日山中对雪有作》出自于唐代诗人杜荀鹤的作品,透过这首诗可以品味出诗人内心的喜悦之情和对下层人民的关注和同情。以下是小编给你推荐的春日山中对雪有作阅读题及参考答案,希望对你有……六年级音乐上册同一首歌教学设计导语:作为一名专为他人授业解惑的人民教师,往往需要进行教学设计编写工作,教学设计是教育技术的组成部分,它的功能在于运用系统方法设计教学过程,使之成为一种具有操作性的程序。如何把……小班音乐游戏小兔和狼教案活动目标:1。听辨小兔和狼两种不同的音乐形象,在愉快和紧张两种不同的游戏气氛中,体验随音乐游戏的快乐。2。在游戏过程中逐步发现躲藏的规则,形成初步的自我控制意识。……语文经典考试歇后语歇后语由劳动人民在日常生活中创造,具有鲜明的民族特色和浓郁的生活气息,经典歇后语。和小编一起来看看下文关于语文经典考试歇后语,欢迎借鉴!1、蜈蚣吃萤火虫心里明白2、……不骄不躁的近义词反义词同义词字词解析不骄不躁的近义词同义词反义词如下:近义词:戒骄戒躁、泰而不骄、不亢不卑同义词:谦虚谨慎、不卑不亢反义词:骄傲自满、自高自大、操之过急不骄不躁在汉语词典的……低碳出行,我绿牌e2,上牌容易还不限号随着汽车保量有的增多,各个城市正在变得越来越拥堵,而解决城市拥有问题,办法之一就是限号。小编亲身体验过摇号的感觉,怎么说呢,就跟平时买彩票一样,时刻关注着,但每期的结果都没中。……亚马逊宣布2022年回归计划由于有潜在的迹象表明,员工重回办公室办公会令人感到不安,亚马逊确认其员工2022年1月才能回办公室。电子商务巨头最初目定于今年9月7日重返办公室办公,对于那些在家办公的人来说,……助听器能左右耳佩戴吗?助听器有几种类型的,如果是简单的模拟助听器,是不区分左右耳,两侧都是可以直接佩戴的。不过现在主流市场的助听器都是数字助听器,是要测试听损患者的听力损失,根据听力损失和听觉反映调……可实现万物互联华为鸿蒙系统将率先应用于BEIJING汽车6月2日,华为发布了鸿蒙操作系统,该系统可实现多个设备之间形成万物互联。而汽车作为超级终端,也将搭载鸿蒙操作系统,BEIJING汽车的某款SUV将成为首款搭载该系统的燃油车型,……项羽本纪阅读答案解析和原文翻译项梁至定陶,再破秦军,项羽等又斩李由,益轻秦,有骄色。宋义谏项梁日:战胜而将骄卒惰者败。今空少惰矣,秦兵日益,臣为君畏之。项梁弗听。宋义使于齐。道遇齐使者高陵君显,日:公将见武……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网