自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小潘

专注于Java后端技术分享!

  • 博客(3)
  • 资源 (1)
  • 收藏
  • 关注

原创 巧用分段锁实现高效自增计数器

分段锁 数据分段上锁,将锁的粒度进一步细化,以此来提升并发的效率。 使用分段锁来提升并发性能的例子,如JDK提供的ConcurrentHashMap,线程安全的Map容器,但是性能比HashTable要高不少。 内部的每一个Segment都是一把锁,也都是一个小的HashMap,通过对Key计算哈希码,定位到一个Segment,每次只对其中一个Segment加锁,而不影响其他Segment的插入,通过分段加锁的方式来实现并发插入。理论上,16个Segment最高可支持16个线程并发插入数据,而HashTab

2020-09-28 20:50:58 115

原创 Java对象的内存是在哪里分配的?

目录Java内存分配策略栈上分配大对象进入老年代TLAB快慢分配 Java内存分配策略 当我们使用new关键字去实例化一个对象时,对象的内存在哪里分配? 相信很多Java程序员给出的答案都是【堆】,但事实并非绝对如此,JVM为此做了许多优化。 对于绝大多数对象,内存的确是在堆中分配的,但是随着JIT编译器的进步、逃逸分析技术的成熟,“Java对象都是在堆中分配内存”这个结论变得不是那么绝对了。 针对Java的内存分配策略,笔者这里画了一张简图如下: 栈上分配 当实例化的对象占用的内存空间较小,且对象没有发

2020-09-11 21:12:20 8639

原创 Java是解释执行还是编译执行的?

目录1、解释执行和编译执行的区别1.1、解释执行1.2、编译执行2、Java是解释执行还是编译执行?2.1、解释器和编译器2.2、何时编译?2.2.1、热点探测 1、解释执行和编译执行的区别 Java代码要想放到JVM里去运行,首先需要经过Javac的编译,将Java代码编译为字节码Class文件。 Class文件反汇编后就是一条条JVM指令了,但是这些指令JVM认识,计算机可不认识。 JVM想要执行这些指令,该怎么办呢? 1.1、解释执行 将JVM指令逐行翻译为本地机器码,逐行翻译,逐行执行。 优点:程序

2020-09-09 19:37:20 265

HashMap.java

JDK7的HashMap源码阅读,几乎给每个方法和属性都加上了中文注释。 可以帮助大家更好的阅读源码,可能有理解不对的地方,望指正。

2019-12-27

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除