当前位置: 首页 > news >正文

物业公司网站模板wordpress首页是哪个文件

物业公司网站模板,wordpress首页是哪个文件,无锡鸿源建设集团有限公司网站,服装移动网站策划案目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前#xff0c;hotspot对于方法区的实现是永久代#xff…目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前hotspot对于方法区的实现是永久代常量池包括字符串常量池放于永久代中 jdk7时hotspot将字符串常量池还有静态变量放在了堆中。有一点“去永久代”的苗头 jdk8之后hotspot取出永久代取而代之的是使用本地内存的元空间。字符串常量池还是在堆中。 为什么要将字符串常量池StringTable放在堆中 jdk7中将StringTable放到了堆空间中因为永久代的回收效率很低。在fullGC的时候才触发而fullGC是老年代空间不足永久代不足时才触发触发次数较少甚至在开发中我们要避免出现fullGC。这就导致了StringTable回收效率不高而我们开发中会创建大量的字符串回收效率低导致永久代内存不足。放到堆里能及时回收内存。 二、String的基本特性 jdk8及以前内部定义了final char[] value用于存储字符串数据 JDK9时改为byte[] 字符类型标记为什么做出这个改变呢 char数组一个char占16bits两个字节String是堆空间的主要部分大部分是latin-1字符一个字节就够了这样会有一半空间浪费。所以采用byte数组字符串类型如果是中文等UTF-16 的用两个字节存储。 StringBufferStringBuilder同样做了修改 String为什么不可变 因为底层数组被final修饰。而且其类自身也被final修饰这就导致了不能通过继承去修改其内部结构。保证了其不可变性。 当字符串重新赋值需要重写指定内存区域赋值不能使用原有的value进行赋值当对现有的字符串进行连接操作时也需要重新指定内存区域赋值不能对使用原有的value进行赋值当调用String的replace方法修改指定字符或字符串时也需要重新指定内存区域赋值不能使用原有的value进行赋值。 字符串常量池中不会存储相同的字符串的 String的String pool是一个固定大小的HashTable默认大小长度是1009如果放进String Pool的String非常多就会造成Hash冲突严重从而导致链表会很长而链表长了直接影响就是调用String.intern时性能会大幅下降 -XX:StringTableSize可设置StringTable的大小JDK6固定1009jdk7中StringTable默认的长度是60013,JDK8时默认是600131009是可设置的最小值 三、String的内存分配 Java语言中有8种基本数据类型和一种比较特殊的类型String,这些类型为了使他们再运行过程中速度更快更节省内存都提供了一种常量池的概念 String的常量池比较特殊主要使用方法有两种 直接使用双引号声明出来的String对象会直接存储在常量池中如果不是双引号声明的String对象可以使用String提供的intern()方法 jdk6及之前字符串常量池存在永久代 jdk7中字符串常量池调整到Java堆中调优时仅需调整堆大小就可以 四、字符串拼接操作 常量与常量的拼接结果在常量池原理是编译期优化 只要其中有一个变量拼接结果就在堆中常量池以外的堆变量的拼接原理是StringBuilder  String res s1 s2; // 实际上是StringBuilder s new StringBuilder().append(s1).append(s2); // 然后调用s.toString(); 如果拼接的结果调用intern方法则主动将常量池中还没有的字符串对象放入池中并返回此对象地址 字符串拼接操作不一定使用的是StringBuilder如果拼接符号左右两边都是字符串常量或常量引用则仍然使用编译期优化即非StringBuilder的方式 针对final修饰类方法基本数据类型引用数据类型变量的结构时能使用final尽量使用上 五、intern()方法 jdk1.6中将这个字符串对象放入串池 如果串池中有则并不会放入返回已有串池中的对象的地址如果没有会把对象复制一份放入串池并返回串池中的对象地址 jdk1.7起将这个字符串对象尝试放入串池 如果串池中有则并不会放入返回已有的串池中的对象的地址如果没有则会把对象的引用地址复制一份放入串池并返回串池中的引用地址 例子 前置知识 newString(ab)会创建几个对象 2个对象查看字节码验证。一个是常量池ab一个是new出来在堆空间。前提是常量池没有ab new String(a)new String(b)? 对象1有拼接操作就newStringBuilder对象2new一个String对象3常量池a对象4new String对象5常量池b对象6StringBuildertoString方法会new String返回 注意toString方法这里new String并不会向字符串常量池中放入ab不像我们平时上面一样会放入一个“ab”在常量池中。 结果 jdk6        false false jdk7/8        false true 分析 jdk6的intern会复制一份1放入字符串常量池。但是new的时候其实已经放入常量池了所以这里intern没啥用此时s2拿到的就是常量池的那一份。而s是指向堆中new出来的String对象所以为false s3这里intern的时候常量池没有“11”所以会复制一份放入常量池此时s4拿到的就是常量池的那一份。而s3指向堆中new出来的String对象所以为false jdk7/8的intern是复制引用地址放入字符串常量池但是new的时候其实已经放入常量池了所以这里intern没啥用此时s2拿到的就是常量池的那一份。所以为false s3这里intern的时候常量池没有“11”所以会复制引用放入常量池此时s4拿到的就是常量池的那一份引用。而s3也指向堆中new出来的String对象所以为true 六、Stringtable的垃圾回收 -XX:PrintStringTableStatistics 七、G1中String去重操作 背景对许多Java应用做的测试结果如下 堆存货数据集合里面String对象占了25%堆存活数据集合里面重复的String对象有13.5%String对象的平均长度是45 许多大规模的Java应用的瓶颈在于内存。Java堆中存活的数据集合差不多25%是String对象这里差不多一半的String对象是重复的 重复是指equals方法true,堆上重复的String对象必然是一种内存的浪费。G1垃圾收集器中实现自动持续对重复的String对象进行去重这样避免浪费。
http://www.zqtcl.cn/news/617365/

相关文章:

  • 海报模板在线制作免费网站如何建设个人网站
  • 网站集群建设的意义如何优化推广网站
  • 怎么给公司做免费网站服装品牌网页设计图片
  • 中国通信建设协会网站新手建网站教程
  • 做网站页面的需要哪些技巧wordpress 网址导航
  • 如何做美食网站设计广州网页设计招聘
  • 中国商标网商标查询官方网站页面模板怎么添加文章
  • 建设基础化学网站的经验如何建设网站pdf下载
  • 外贸公司网站设计公司做网站能挣钱不
  • 免费网站ppt模板下载济南建设网站公司
  • 网站建设技术托管免费空间域名注册免备案
  • 威海住房建设部官方网站专科网站开发就业方向
  • 做外贸网站多少钱成都网页设计专业
  • 北京比较好的网站公司在线医生免费咨询
  • 免费的个人网站怎么做企业网站管理系统软件
  • 枣庄住房和城乡建设局网站如何注册国外域名
  • 满洲里建设局网站网页设计公司的目标客户有哪些
  • 英文书 影印版 网站开发怀化组织部网站
  • 网站建设领域的基本五大策略要学会网站细节
  • dede做英文网站优化cms建站系统哪个好
  • eclipse sdk做网站邯郸技术服务类
  • 汕头网站网站建设西安网约车租车公司哪家好
  • 网站空间域名维护协议网络推广软件平台
  • 昆明网站建设公司猎狐科技怎么样wordpress主题打不开
  • 网站推广入口服饰网站建设 e-idea
  • 长沙网站建设电话2个女人做暧暧网站
  • 手机手机端网站建设电子商务网站建设步骤一般为
  • 上海金瑞建设集团网站怎样登陆网站后台
  • 定西模板型网站建设网络架构和现实架构的差异
  • 做搜索的网站做网站的代码有哪些