- 博客(3)
- 收藏
- 关注
原创 常量池、运行时常量池和字符串常量池,三者有什么关系和区别
三者的关系:在编译阶段产生常量池,在类加载阶段常量池转换为运行时常量池,在运行阶段处理字符串时使用字符串常量池(字符串常量池在类加载之前就已经被创建好了)。常量池运行时常量池字符串常量池内容字面量+符号引用常量+符号引用+直接引用字符串对象引用位置.class文件方法区1.7之前在方法区,1.7开始在堆内存使用范围单个类或接口单个类或接口整个JVM共享。
2025-07-26 22:56:39
427
原创 非公平锁比公平锁快在哪?
最近在复习 AQS 和 ReentrantLock 时,发现有一个问题没有去细想过,都说非公平锁的性能比公平锁要好,为什么会更好?有些资料说是因为非公平锁减少了线程切换带来的消耗,那么是在哪里减少了切换?《Java并发编程的艺术》一书中说是一个线程释放锁后可能再次获取锁,而再次获取成功的概率很大,其他线程只能在队列中等待,所以减少了线程切换。我看的一篇博客说是一个线程释放锁并唤醒阻塞的线程时,来了一个插队的新线程,新线程执行很快,抢到锁后很快就释放了,阻塞的线程完全唤醒后就不需要再次阻塞。
2025-06-23 21:48:48
944
原创 Java——HashMap底层详解
HashMap是一种用于存储键值对的、线程不安全的数据结构。JDK1.7版本的HashMap底层是用数组+链表的方式实现的。在发生hash冲突时,会在冲突位置形成链表,即链地址法。这种方式在冲突过多的情况下,链表会特别长,影响查找效率。JDK1.8开始引入了红黑树,当链表长度超过8且数组容量到达64时(没到64会优先扩容),会将链表转换为红黑树,这样就可以提供查找性能。当然,一般而言,即使是几十上百万的数据量,链表长度也很难超过8,所以红黑树一般是用来应对DoS攻击之类的。
2024-10-09 07:53:07
1043
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅