`
Luob.
  • 浏览: 1590312 次
  • 来自: 上海
社区版块
存档分类
最新评论

检测一个字符串是否在jvm的常量池中

    博客分类:
  • Java
JVM 
阅读更多
public static boolean inPool(String s) {  
    String s2 = s.intern();  
    if (s2 == s)  
        return true;  
    return false;  

} 
分享到:
评论

相关推荐

    openjdk8u60+jvm jdk源码+jvm源码

    5. **字符串常量池(String Pool)**:在 OpenJDK 8 中,字符串常量池位于堆内存中,它存储了所有字符串字面量和字符串对象的引用,以实现字符串的共享和重复利用。 6. **并发与多线程(Concurrency and ...

    JVM指令手册_jvm指令手册_

    10. **类和数组操作指令**:`newarray`用于创建数组,`anewarray`创建引用类型数组,`multianewarray`创建多维数组,`ldc`用于加载常量池中的类名或字符串。 理解JVM指令手册对于优化Java代码、进行内存分析、理解...

    阿-朗最新java面试题

    当创建一个新String时,如果其内容已经在常量池中存在,那么JVM会直接返回池中的引用,而不是创建新的对象。 关于`String.intern()`方法,它将字符串转换为常量池中的字符串。如果字符串已经存在于常量池中,就返回...

    JVM性能调优经典教程

    9. **字符串池和常量池**:理解这两个池的作用,以及它们如何影响内存使用和性能,有助于优化代码。 10. **代码优化**:编写高效且符合JVM优化特性的代码,如避免过度使用对象,合理使用局部变量,减少反射和动态...

    jvm性能调优-jvm内存模型和优化-performance-jvm-memorymodel-optimize.zip

    每当线程执行一个方法时,都会在虚拟机栈中创建一个栈帧。 3. **本地方法栈(Native Method Stack)**:处理Java方法之外的本地方法,如C++或JNI方法。 4. **堆(Heap)**:存放所有对象实例及数组,是Java应用中...

    JVM实战-对象访问与内存溢出异常解析

    对于运行时常量池的测试,可以通过创建大量的字符串常量来填充常量池,直到溢出。实验结果展示,不同版本的JDK在处理此类异常时存在差异,例如JDK1.6和JDK1.7在相同条件下表现不同。 ##### 本机直接内存溢出 为了...

    Java虚拟机规范(Java SE 7).pdf 周志明

    8. **字符串常量池**:JVM维护了一个字符串常量池,用于存储字符串对象的引用,避免重复创建相同的字符串对象。 9. **反射**:Java反射机制允许在运行时检查类、接口、字段和方法的信息,动态创建对象和调用方法,...

    JVM与性能优化知识点整理.zip

    - **String池**:理解字符串常量池的工作原理,避免不必要的字符串拼接和复制。 - **集合优化**:根据数据特性选择合适的集合类型,如ArrayList、LinkedList、HashMap、ConcurrentHashMap等。 以上知识点构成了...

    Jvm之用C#解析class文件

    - 注意处理变长项,如UTF8字符串和整数数组,它们的长度是前缀的一个字节或两个字节表示的。 - 在处理属性时,可能需要递归解析其内部结构,因为属性可以包含其他属性或自定义数据。 4. **工具和库支持**: - `...

    findbugs检测提示详解

    6. **invokes inefficient new Short(short) constructor**:使用`Short.valueOf(short)`比`new Short(short)`更高效,因为前者会复用JVM内部的短整型常量池。例如: ```java Short aShort = Short.valueOf(12); ```...

    Java综合面试资料集

    1. 字符串常量和字符串常量池:字符串常量是 Java 语言中的一个基本类型,字符串常量池是 Java 语言中的一个机制,它用于存储字符串常量。 2. String 是最基本的数据类型吗:String 不是 Java 语言中的基本数据类型...

    SE阶段面试题

    - 当使用`new String("xyz")`创建字符串时,会创建两个字符串对象:一个在常量池中,另一个在堆中。 ### 9. `synchronized`与`Lock`接口 - `Lock`接口提供了比`synchronized`更灵活的锁机制,包括尝试锁、定时锁等...

    一个简单的class文件解析

    每个部分都有其独特的功能,例如常量池存储了字符串、类名、方法名等信息,访问标志则标识了类或方法的访问权限(如public、private等)。 接下来,我们要了解的是字节码。字节码是`class`文件中的主要执行单元,它...

    最新最全的java面试题汇总

    在Java中,使用`new String()`创建字符串会创建一个新的字符串对象,并且还会在常量池中创建一个相同的字符串副本。而直接使用`String s = "xyz";`创建的字符串只会在常量池中创建,不会额外创建对象。 ### 8. `...

    javaclass反编辑器

    2. **分析常量池**:常量池存储了类的各种元数据,如字符串、类名、方法名、字段引用等。查看常量池可以揭示类之间的关系和依赖。 3. **解构字段和方法**:反编辑器会显示类中的所有字段和方法,包括它们的访问修饰...

    java面试题集总结

    1. **字符串常量池**:当创建字符串时,如果该字符串已经在常量池中存在,则直接返回常量池中的引用。 2. **`new String()`与字符串字面量**:使用`new String("xyz")`创建的对象位于堆内存中,并且不会直接放入字符...

    面试题库java

    在Java中,`"123"`这样的字面量会在字符串常量池中创建一个对象,而`new String("123")`会额外在堆内存中创建一个新的字符串对象,因此这个表达式会创建两个对象。 2. **内存管理**: - 对象创建与垃圾回收:面试...

    JAVA基础知识问答大全

    这是因为`new String()`构造函数会创建一个新的字符串对象,即使该字符串已经在常量池中存在。 以上是对给定文件中提到的Java基础知识问答的详细解析,涵盖了从关键字的使用、集合类的差异到垃圾收集机制的各个方面...

    allocation.zip

    4. **对象池与内存优化**:为了提高性能,JVM提供了对象池,对于某些小对象,如字符串或常量,会尝试复用已有的实例,而不是每次都创建新的。此外,通过使用适当的集合类(如ArrayList vs. LinkedList)和数据结构,...

Global site tag (gtag.js) - Google Analytics