iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java中String.intern()方法功能介绍
  • 387
分享到

java中String.intern()方法功能介绍

2024-04-02 19:04:59 387人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

下文笔者讲述java中String.intern()方法的功能简介说明,如下所示: String.intern原理 String.intern():    此方法

下文笔者讲述java中String.intern()方法的功能简介说明,如下所示:

String.intern原理

String.intern():
    此方法是一个Native方法
      底层调用c++的 StringTable::intern方法实现

    当通过语句str.intern()调用intern()方法后
    JVM 就会在当前类的常量池中查找是否存在与str等值的String
     若存在则直接返回常量池中相应Strnig的引用
     若不存在,则会在常量池中创建一个等值的String
       然后返回这个String在常量池中的引用
     ---------------------------------------------------------------
     因此,只要是等值的String对象
        使用intern()方法返回的都是常量池中同一个String引用
     所以,这些等值的String对象通过intern()后使用==是可以匹配的

jdk6中String.intern()

Jdk6中常量池位于PermGen(永久代)中
 PermGen是一块主要用于存放已加载的类信息和字符串池的大小固定的区域
--------------------------------------------------------------------------
 运行intern()方法时
当常量池中不存在等值的字符串,JVM就会在常量池中创建一个等值的字符串
  然后返回该字符串的引用
除此以外,JVM 会自动在常量池中保存一份之前已使用过的字符串集合
 Jdk6中使用intern()方法的主要问题就在于常量池被保存在PermGen(永久代)中

注意事项:
    首先PermGen是一块大小固定的区域,一般不同的平台PermGen的默认大小也不相同,
   大致在32M到96M之间。
   所以不能对不受控制的运行时字符串(如用户输入信息等)使用intern()方法,
    否则很有可能会引发PermGen内存溢出;
   其次String对象保存在Java堆区,Java堆区与PermGen是物理隔离的,
  因此如果对多个不等值的字符串对象执行intern操作,
  则会导致内存中存在许多重复的字符串,会造成性能损失 

JDK7中String.intern()

Jdk7将常量池从PermGen区移到了Java堆区
   运行intern操作时
  当常量池已经存在该字符串,则直接返回字符串引用
  否则复制该字符串对象的引用到常量池中并返回
  堆区的大小一般不受限,所以将常量池从PremGen区移到堆区使得常量池的使用不再受限于固定大小
  除此之外,位于堆区的常量池中的对象可以被垃圾回收
   当常量池中的字符串不再存在指向它的引用时,JVM就会回收该字符串
   可以使用 -XX:StringTableSize 虚拟机参数设置字符串池的map大小
   字符串池内部实现为一个HashMap
   所以当能够确定程序中需要intern的字符串数目时
   可以将该map的size设置为所需数目*2(减少hash冲突)
   这样就可以使得String.intern()每次都只需要常量时间和
    相当小的内存就能够将一个String存入字符串池中
 String.intern()方法的功能:
    其功能手动将字符串放入常量池中 

到此这篇关于java中String.intern()方法具有什么功能呢?的文章就介绍到这了,更多相关java String.intern()内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java中String.intern()方法功能介绍

本文链接: https://www.lsjlt.com/news/150440.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中String.intern()方法功能介绍
    下文笔者讲述java中String.intern()方法的功能简介说明,如下所示: String.intern原理 String.intern():    此方法...
    99+
    2024-04-02
  • java中String.intern()方法有什么功能
    这篇文章主要介绍“java中String.intern()方法有什么功能”,在日常操作中,相信很多人在java中String.intern()方法有什么功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jav...
    99+
    2023-06-30
  • windows7功能介绍
    Windows 7 是 Microsoft 公司开发的一款操作系统。它在 Windows Vista 的基础上进行了许多改进,提供了...
    99+
    2023-09-22
    Windows
  • CSS3中常用功能的写法介绍
    这篇文章主要介绍“CSS3中常用功能的写法介绍”,在日常操作中,相信很多人在CSS3中常用功能的写法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS3中常用功能的写法...
    99+
    2024-04-02
  • Java中PrintWriter使用方法介绍
    目录简介文本文件的转码复制运行程序简介 PrintWriter 与 PrintStream 相同。PrintStream 只能接字节流,而 PrintWriter 既能接字节流又能接...
    99+
    2024-04-02
  • Java中的方法内联介绍
    目录1. 什么是方法内联2. 方法内联的重要性3. Java中方法内联的困难继承类型关系分析 CHA总结 1. 什么是方法内联 例如有下面的原始代码: static cla...
    99+
    2024-04-02
  • JavaScript中super的功能介绍
    本篇内容主要讲解“JavaScript中super的功能介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中super的功能介绍”吧!首先在...
    99+
    2024-04-02
  • CentOS 7.1功能介绍
    这篇文章主要介绍“CentOS 7.1功能介绍”,在日常操作中,相信很多人在CentOS 7.1功能介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CentOS 7.1功能介绍”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-10
  • J2SE 1.4 中assertion 功能介绍(转)
    JSPCN主页 | JSP空间 | JSP教程 | JSP下载 | JSP论坛 | 留言 | 关于JSPCN | 友情链接 | 联系我们 地图 做最专业的JSP中文网站当前位置:首页--文章分类--JAVA技术--JMX 文章搜索: ...
    99+
    2023-06-03
  • oracle审计功能的用法介绍
    本篇内容主要讲解“oracle审计功能的用法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle审计功能的用法介绍”吧! 1,开启审计: s...
    99+
    2024-04-02
  • Sharding-Proxy基本功能用法介绍
    目录Sharding-Proxy的安装server.yaml配置config-sharding.yaml的配置config-master_slave.yaml的配置config-sh...
    99+
    2024-04-02
  • Java语言中的重构方法介绍
    重构是指对已有代码进行修改,以改善其设计和功能,但不改变代码的外部行为。在Java语言中,有许多重构方法可以使用。以下是一些常见的重...
    99+
    2023-08-29
    java
  • Java中的递归方法示例介绍
    目录递归递归的注意事项:案例一递归求阶乘不使用递归实现阶乘使用递归实现阶乘澳大利亚不死神兔(斐波那契数列)使用数组实现使用递归实现总结递归 方法定义本身调用方法本身的现象叫做递归 在...
    99+
    2024-04-02
  • Xcode 8新功能介绍
    Xcode 8是苹果公司最新发布的一款集成开发环境(IDE),主要用于开发iOS、macOS、watchOS和tvOS应用程序。以下...
    99+
    2023-09-28
    Xcode
  • Kubernetes1.5的新功能介绍
    本篇内容介绍了“Kubernetes1.5的新功能介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!主题简介StatefulSets (原名...
    99+
    2023-06-05
  • CORNERSTONE产品功能介绍
    CORNERSTONE作为新一代智能项目管理平台,专注于产品研发项目管理,致力于帮助企业全方位解决团队协作与研发痛点,内嵌精益/敏捷/DevOps方法论,让企业能快速响应市场变化和客户需求,同时还具备成熟的立体化智能数据分析系统,可自动生成...
    99+
    2023-06-04
  • vue中install方法介绍
    目录1、全局注册组件2、全局自定义指令vue提供install可供我们开发新的插件及全局注册组件等 install方法第一个参数是vue的构造器,第二个参数是可选的选项对象 ex...
    99+
    2024-04-02
  • Java Web中Ajax技术使用方法介绍
    目录前言一、Ajax与传统的Web应用模式的对比二、Ajax使用的技术三、XMLHttpRequest对象的具体使用1、初始化XMLHttpRequest对象2、XMLHttpReq...
    99+
    2022-11-13
    Java Web Ajax Java Ajax
  • java中Object类4种方法详细介绍
    目录Object(四大方法):hashCode()方法:equals()方法:getClass()方法:toString()方法:总结Object(四大方法): 文章干货满满,耐性看...
    99+
    2024-04-02
  • Java 8 中 Function 接口使用方法介绍
    目录Java 8 中 Function 接口的介绍Function 接口的用法Function 接口的实例Java 8 中 Function 接口的介绍 Java 8 中提供了一个函...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作