When 什么时候需要了解String的intern方法: 面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性、String常量池的设计以及String.intern方法所做的事情。但其实,我们在实际的编程中也可能碰到可以利用S ...
分类:
编程语言 时间:
2018-08-23 22:13:27
阅读次数:
181
.class文件常量池 常量池主要存放两类常量: 字面量 和 符号引用 。 字面量指文本字符串等。 符号引用指: 类和接口的全限定名 字段的名称和描述符 方法的名称和描述符 编译期结束,当类加载器加载类时,.class文件常量被加入运行常量池,如果常量已存在则不再加载。 .class文件常量对象(如 ...
分类:
其他好文 时间:
2018-08-16 21:37:59
阅读次数:
169
方法区 线程共享。 当JVM使用类装载器装载某个类时,首先获取class文件,提取该文件的内容信息,将这些信息存储到方法区,最后返回一个class实例。方法区用于存储已经被虚拟机加载的类信息(class)(版本,字段,方法,接口等描述信息),常量,静态变量(static),即时编译期编译后的代码数据等。称为“永久代”。GC在这区域较少出现,内存回收的主要目标是针对常量池的回收和对类的卸载(某个类不
分类:
其他好文 时间:
2018-07-21 17:18:26
阅读次数:
186
一.String 01.常量池没有abc,首先会在常量池开辟一块空间,保存"abc"。 02.再去堆中开辟一块空间,保存"abc"。 03.b指向堆中abc *********************************************************************** ...
分类:
其他好文 时间:
2018-07-10 19:11:33
阅读次数:
136
jvm_string常量池 1.设计思想 *目的提高性能 *池中对象一直有引用,不会被垃圾回收 2.存放位置 *存放在方法区 *对于基础类型变量和常量。变量和引用存储在栈中,常量存储在常量池中 参考文档:1.https://segmentfault.com/a/1190000009888357 ...
分类:
其他好文 时间:
2018-05-28 16:15:29
阅读次数:
111
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢。 本文链接:http://www.cnblogs.com/NiceCui/p/8046564.html 邮箱:moyi@moyibolg.com 日期:2017 12 15 1. String 介绍,常用方法源码分析 2. Str ...
分类:
编程语言 时间:
2017-12-16 15:51:04
阅读次数:
166
在JVM中具有String常量池缓存的功能 将synchronized(string)同步代码块和String联合使用,结果出现意外 测试 结果是无限循环的打印a 出现这种情况的原因是因为String的两个值都是AA,两个线程持有相同的锁。所以造成线程B不能执行,这就是String常量2池带来的问题 ...
分类:
其他好文 时间:
2017-12-08 22:53:20
阅读次数:
195
在JVM中有string常量池缓存的功能。 package com.leran.thread.demo1; public class Test { public static void main(String[] args) { String a = "a"; String b = "a"; Sys ...
分类:
编程语言 时间:
2017-09-10 12:30:55
阅读次数:
166
package com.bjsxt.base.sync006;/** * synchronized代码块对字符串的锁,注意String常量池的缓存功能 * @author alienware * */public class StringLock { public void method() { / ...
分类:
其他好文 时间:
2017-05-17 17:14:11
阅读次数:
148
API:(Appilcation Programming Interface) 就是一些已经写好,可以直接拿来用的功能,在java中以类的形式封装; 包的作用:将所有的类库进行分类,就像一个学校分成不同学院, 常用的包: Java.lang : 基础类,如字符串,多线程,不需要import Java ...